由于我对Python很陌生,这对你来说可能是一个简单的问题!
我想对给定文件夹中具有特定名称的所有目录执行一个流程' folder_a' (其中包括' folder_1',' folder_2',...)。
第一个问题:如何获取所有目录和folder_a的列表?我试过的是:
表示glob.glob中的子文件夹(" OPER .safe"):print sub_folders
但是,这只会创建一个包含所有目录的字符串,这在我的情况下并没有用。
第二个问题:如果我已经获得了列表并且想要使用for循环逐个访问每个文件夹,我该怎么做?
提前非常感谢你!
答案 0 :(得分:4)
要遍历目录的内容,可以使用python的优秀os.walk
函数:
import os
for root, dirs, files is os.walk(root_dir):
for d in dirs:
if search_term in d:
do_something_to_directory(d)
os.walk()
生成元组,其中root
是您开始迭代的目录,dirs
是目录列表,files
是文件列表
编辑:如果您想从某个子目录中获取文件,请迭代文件并过滤所需的目录名称。试试看我的意思:
for root, dirs, files in os.walk(starting_directory_path):
for f in files:
absolute_path = os.path.join(root, f)
if 'Desired Folder Name' in absolute_path:
print absolute_path
由于os.walk()
是递归的,所有子目录中的所有文件都将在files
列表中。您只想使用dirs
列表,而您正在寻找专门用于目录的列表。所有文件都在文件中。