python - 在 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>
你能帮忙吗?
解决方案
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
推荐阅读
- php - “警告:printer_draw_bmp():加载位图失败”上的 PHP 错误
- r - 将社区数据转换为素食套餐的宽格式
- python - 试图创造人工智能 - 一些 IF 语句没有捕捉到
- angularjs - 在 angularjs 控制器中从外部获取 POST 数据
- java - 在 Android 上创建一个同时包含 simple_list_item_1 和 simple_list_item_multiple_choice 的 ListView
- visual-studio - 根据操作系统位数自动启动 32 位/64 位?
- javascript - 与 DOM 首次交互时调用函数(点击桌面浏览器/点击移动浏览器)
- c# - 如何在 ASP 中始终保持会话变量的更新。网络MVC
- python - TypeError: a bytes-like object is required, not 'str' ,我应该怎么做才能修复它?
- php - UID 大于某个值的 imap_search