简介:本文的首席执行官注释将介绍python查看子目录中有多少个文件的相关内容。我希望这对每个人都会有所帮助。让我们来看看。
如果要计算目录中的所有文件,包括子目录,子目录,子目录。
您可以使用os.walk查找目录中的所有文件
1
2
3
导入操作系统
打印总和([[len(x)for _,_,x,x in OS.Walk(OS.Path.dirname(“ test”)))))
#test是目录名称
OS.Walk将递归中指定目录中的文件。返回值分别是当前文件夹的完整路径,即当前文件夹中的文件夹中的文件夹和文件。我们只需要文件,所以我不将其取出,只需使用“ _”即可占用一个地方。
如果您只想计算当前目录中的文件,则不包括子目录。仅使用OS.LISTDIR,仅文件数:文件数:
1
len([[x for x in os.listdir(OS.Path.dirname(__file__))如果OM.Path.Isfile(x)]
有时,我们在目录中有文件的需求和子目录。这种情况可用于准备好制造命令。例如,在Windows下的DIR命令,可以实现Linux下的LS命令。我们如何使用Python代码?
我们可以使用Python丰富的图书馆轻松地获得一个简单的版本。下面我们使用4种方法来实现它。
1.使用OS.Popen
OS.Popen的工作原理是创建一个新的子进程,然后使用此子过程执行命令。父过程和子过程通过管道进行通信。
基于调用Popen时的段落,我们可以通过管道读取子过程的输出,以将数据写入子进程。默认值是阅读孩子的过程的输出。
从上面的描述中,我们可以看到Popen非常普遍,不仅是我们的示例。
然后,让我们开始使用它来实现我们的需求,代码如下:
哈哈,这很简单吗?尽管此方法可以实现目的,但这不是我们想要的。我们最初想实现LS。结果,我们打电话给LS,因此,严格的Sensego将其视为其他方法,呵呵。
第二,使用glob.glob
Glob可以根据您使用的传递匹配该文件。使用此功能,我们可以在当前目录中列出哪些文件和sub -directory,如下:以下代码:
第三,使用OS.Listdir
OS.Listdir还可以列出目录中的哪些文件和子段,如下:
第四,使用OS.Walk
OS.Walk在穿越目录方面非常强大。它不仅可以穿越您需要的目录,而且还可以通过日历目录和递归深度来控制递归深度。让我们看看如何穿越整个目录树以及如何控制深度。
默认情况下,整个目录树遍历整个目录树。如下所示,以下代码将在当前目录中打印出所有文件:
那么,我们如何控制遍历的深度,例如只有n -layer?实际上,这很简单。您只需要定义一个深度变量,然后才能在到达n后跳出循环。以下代码仅遍历1层:
在这一点上,我们已经完成了4种方法。如果您还有其他方法,请评论和交换。
使用Path Object Glob()函数和RGLOB()函数,您可以在指定路径下查看文件和子文件夹。两者之间的区别在于,glob()函数仅执行第一个级别搜索,而rglob()函数将进行多级搜索。
从pathlib导入路径
p =路径('d:\ folder \')
r = p.glob('*')
因为我在r中:
打印(i)#show glob()函数的结果
print(' - ' * 25)#段是分段行
r = p.rglob('*')
因为我在r中:
打印(i)#show rglob()函数的结果
相应的结果如下:
D:1111.txt
D:11 .mp3
D:11.mp3
D:11 P1000
D:11个文件夹
---------------------------------------------------------------------------------------------------------------------------
D:1111.txt
D:11 .mp3
D:11.mp3
D:11 P1000
D:11个文件夹
D:11个文件夹Documents.txt
_________________________________
例如:C:tddownload目录中有两个文件:a.txt和b.txt,并且有两个文件:sub1 sub -folder文件夹下的c.txt和d.txt,c:tddownloadsub1。
1。
操作系统
OS.Walk()返回一个三元素元组:当前路径,文件夹的名称和文件列表。
进口
操作系统
防守
好玩
小路
),:
Em
deor
根,
dirs,
文件
在
os.Walk(
小路
),:
Em
deor
fn
在
文件:
Em
打印
根,
fn
Em
好玩
R'C:TDDownload'
治愈
C:TDDownload
a.txt
C:TDDownload
b.txt
C:TDDownloadsub1
c.txt
C:TDDownloadsub1
d.txt
2。
glob.glob
glob.glob()仅接受一个参数。该参数既具有路径和匹配模式。
返回值
对于列表。注意glob.glob()无法直接渗透子文件夹,您需要自己处理:
防守
好玩
小路
),:
Em
deor
fn
在
glob.glob(
小路
+
OS.Sep
+
'*'
),:
#
'*'代表匹配所有文件
Em
如果
os.path.isdir(
fn
),:
#
如果结果是文件夹
Em
好玩
fn
治愈
#
递归
Em
别的:
Em
打印
fn
Em
好玩
R'C:TDDownload'
治愈
C:tddownloada.txt
C:tddownloadb.txt
C:tddownloadsub1c.txt
C:tddownloadsub1d.txt
'*'是匹配模式,代表所有文件的匹配。只有通过这种方式,才能找到子文件夹,以便将递归加深并检测到下一层的文件。
FileCount = 0
导入操作系统
对于root,dir,在OS.Walk(“文件夹”)中的文件:
FileCount+= Len(文件)
打印(“文件夹下的文件总计”%filecount)
使用OS.Walk遍历文件夹,计算文件数量
结论:以上是首席CTO的全部内容,请注意查看子目录的Python中有多少个文件。我希望这对每个人都会有所帮助。如果您想进一步了解这一点,请记住要收集对该网站的关注。