Python列表目录,子目录和文件
问题内容:
我试图制作一个脚本来列出给定目录中的所有目录,子目录和文件。
我尝试了这个:
import sys,os
root = "/home/patate/directory/"
path = os.path.join(root, "targetdirectory")
for r,d,f in os.walk(path):
for file in f:
print os.path.join(root,file)
不幸的是,它无法正常工作。
我得到所有文件,但没有完整的路径。
例如,如果dir结构为:
/home/patate/directory/targetdirectory/123/456/789/file.txt
它会打印:
/home/patate/directory/targetdirectory/file.txt
我需要的是第一个结果。任何帮助将不胜感激!谢谢。
问题答案:
使用os.path.join
来连接的 目录 和文件 名 :
for path, subdirs, files in os.walk(root):
for name in files:
print os.path.join(path, name)
请注意,path
并没有root
在串联中使用,因为使用root
会不正确。
在Python
3.4中,添加了pathlib模块以简化路径操作。因此,等效于os.path.join
:
pathlib.PurePath(path, name)
好处pathlib
是您可以在路径上使用各种有用的方法。如果使用具体的Path
变体,您还可以通过它们进行实际的OS调用,例如更改为目录,删除路径,打开其指向的文件等等。