[英]How to list all files in a given directory and subdirectories?
我想从用户那里获取一个路径,我想列出该路径中所有目录和子目录的文件名。 到目前为止,我只能获取目录而不是子目录的文件名:我不允许使用 os.walk()
import sys, os.path
l = []
def fnames(path):
global l
l = os.listdir(path)
print(l)
path = '/Users/sohamphadke/Desktop'
for i in l:
if os.path.isdir(l) == True:
fnames(l)
elif os.path.isdir(l) == False:
break
glob
模块是你的答案!
您可以在此处访问文档,即:
如果 recursive 为真,模式“
**
”将匹配任何文件和零个或多个目录、子目录和目录的符号链接。 如果模式后跟 os.sep 或 os.altsep 则文件将不匹配
所以你可以这样做:
import os
import glob
paths_list = glob.glob('/Users/sohamphadke/Desktop/**/*', recursive=True)
# Separate between files and directories
dirs_list = [path for path in paths_list if os.path.isdir(path)]
files_list = [path for path in paths_list if os.path.isfile(path)]
希望这可以帮助!
您可以检查os.walk()方法,它会根据您的要求获取您的树。
您可以使用os.walk
穿过一条路径。 参考文档
import os
for root, dirs, files in os.walk(path):
print("root: {}\ndirs: {}\nfiles: {}".format(root, dirs, files))
如果您被允许使用pathlib
...
path = '/Users/sohamphadke/Desktop'
paths = Path(path).glob("**/*")
file_list = [p for p in paths if p.is_file()]
dir_list = [p for p in paths if p.is_dir()]
注意paths
是一个生成器,因此您可以遍历每个路径并一次检查它是文件还是目录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.