繁体   English   中英

如何列出给定目录和子目录中的所有文件?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM