首页 > 解决方案 > 在 Python 中自动列出多个目录中的文件

问题描述

我需要创建一个包含来自多个目录的所有文件的列表。

我有 all_dir其中包含dir1, dir2, dir3.... 每个目录包含多个文件['text1.txt','text2.txt'...]。虽然我能够创建单个目录的列表,但我找不到自动化的方法。

这就是我所拥有的,它适用于单个目录。

path = '../all_dir'
list1 = [f for f in os.listdir(os.path.join(path, 'dir1')
list2 = [f for f in os.listdir(os.path.join(path,'dir1') 
#etc...

这将是我正在考虑的代码:

all_list = []

for dir1 in os.listdir(path):
    current = os.listdir(os.path.join(path,dir1))
    all_list.append(current)

但是这个 for 循环引发: NotADirectoryError

为了解决这个问题,我试过了

all_list = []

for dir1 in os.listdir(path):
    current = os.walk(os.path.join(path,dir1))
    all_list.append(current)

但是这个循环提出了一个列表<generator object walk at 0x100ca4e40>

你能帮忙吗?

标签: pythondirectorypython-oslistdir

解决方案


listdir还返回文件,因此在 for 循环中您应该检查它是否是目录。您可以使用os.path.isdir()

for dir1 in os.listdir(path):
    full_path = os.path.join(path, dir1)
    if os.path.isdir(full_path):
        current = os.listdir(full_path)
        all_list += current

推荐阅读