我正试图制作一个脚本来列出给定目录中的所有目录、子目录和文件。
我试过这个:
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
连接目录和文件名称:注意在连接中使用
path
而不是root
,因为使用root
是不正确的。在Python 3.4中,添加了pathlib模块,以便于路径操作。因此,与
os.path.join
等价的是:pathlib
的优点是可以在路径上使用各种有用的方法。如果您使用具体的Path
变量,您还可以通过它们执行实际的操作系统调用,比如切换到目录、删除路径、打开它指向的文件等等。以防万一。。。正在获取目录和子目录中与某个模式匹配的所有文件(例如:“.py”):
这里有一行:
最外层的
val for sublist in ...
循环将列表展平为一维。j
循环收集每个文件基名的列表,并将其连接到当前路径。最后,i
循环遍历所有目录和子目录。这个例子使用了^{} 调用中的硬编码路径
./
,您可以补充任何您喜欢的路径字符串。注意:^{} 和/或^{} 可用于路径字符串,如
~/
扩展此示例:
它很容易添加文件basename测试和directoryname测试。
例如,测试
*.jpg
文件:另外,排除
.git
目录:相关问题 更多 >
编程相关推荐