【发布时间】:2016-09-01 12:17:05
【问题描述】:
在 Python 中统计所有文件夹和子文件夹中的所有文件最有效的方法是什么?我想在 Linux 系统上使用它。
示例输出:
(路径文件)
/2
/bin 100
/启动 20
/boot/efi/EFI/redhat 1
....
/root 34
....
应该忽略没有文件的路径。
谢谢。
【问题讨论】:
-
您认为有什么方法可以做到这一点?你有没有尝试过?
在 Python 中统计所有文件夹和子文件夹中的所有文件最有效的方法是什么?我想在 Linux 系统上使用它。
示例输出:
(路径文件)
/2
/bin 100
/启动 20
/boot/efi/EFI/redhat 1
....
/root 34
....
应该忽略没有文件的路径。
谢谢。
【问题讨论】:
你可以用os.walk()来做;
import os
for root, dirs, files in os.walk('/some/path'):
if files:
print('{0} {1}'.format(root, len(files)))
请注意,这还将包括隐藏文件,即那些以点 (.) 开头的文件。
【讨论】:
import os
print [(item[0], len(item[2])) for item in os.walk('/path') if item[2]]
它返回文件夹/子文件夹的元组列表以及/path 中的文件计数。
或
import os
for item in os.walk('/path'):
if item[2]:
print item[0], len(item[2])
它打印/path 中的文件夹/子文件夹和文件计数。
如果您想尝试更快的解决方案,那么您必须尝试结合:
os.scandir() # from python 3.5.2
递归迭代并使用:
from itertools import count
counter = count()
counter.next() # returns at first 0, next 1, 2, 3 ...
if counter.next() > 1000:
print 'dir with file count over 1000' # and use continue in for loop
也许那会更快,因为我认为os.walk 函数对你来说是不必要的。
【讨论】: