使用python在文件夹中获取完整的递归文件列表的最简单方法是什么?我知道os.walk()
,但是对于获取所有文件的未过滤列表似乎有些过分。它真的是唯一的选择吗?
答案 0 :(得分:14)
没有什么能阻止你创建自己的功能:
import os
def listfiles(folder):
for root, folders, files in os.walk(folder):
for filename in folders + files:
yield os.path.join(root, filename)
您可以像这样使用它:
for filename in listfiles('/etc/'):
print filename
答案 1 :(得分:6)
os.walk()
无论如何都不会有点过分。它可以在jiffy中生成文件和目录列表:
files = [os.path.join(dirpath, filename)
for (dirpath, dirs, files) in os.walk('.')
for filename in (dirs + files)]
您可以将其转换为生成器,一次只处理一个路径并在内存上安全。
答案 2 :(得分:1)
要么使用isdir()
/ isfile()
和listdir()
进行手动递归,要么可以使用subprocess.check_output()
并致电find .
。基本上os.walk()
是最高级别,略低级别是基于listdir()
的半手动解决方案,如果您想要相同的输出find .
,您可以出于某种原因使用系统调用subprocess
。
答案 3 :(得分:1)
答案 4 :(得分:0)
import os
path = "path/to/your/dir"
for (path, dirs, files) in os.walk(path):
print files
这是矫枉过正,还是我错过了什么?