我想要做的是遍历目录中的文件夹,并在每个文件夹中找到一个文件'fileX',我想给一个方法,该方法本身需要文件名作为参数来打开它并获得一个特定的值从中。因此'method'将从'fileX'中提取一些值(文件名在每个文件夹中都是相同的)。
我的代码看起来像这样但我总是被告知我想要的文件不存在而不是这样:
import os
import xy
rootdir =r'path'
for root, dirs, files in os.walk(rootdir):
for file in files:
gain = xy.method(fileX)
print gain
此外,我正在迭代的文件夹被命名为'folderX0','folderX1',...,'folderX99',这意味着它们都具有相同的名称,并且结尾数字越来越多。如果我能告诉程序忽略可能在'path'中的所有其他文件夹,那将是很好的。 谢谢你的帮助!
答案 0 :(得分:2)
os.walk
返回相对于它提供的root
目录的文件和目录名称。您可以将它们与os.path.join
结合使用:
for root, dirs, files in os.walk(rootdir):
for file in files:
gain = xy.method(os.path.join(root, file))
print gain
有关详细信息,请参阅documentation for os.walk
:
要获取dirpath中文件或目录的完整路径(以top开头),请执行
os.path.join(dirpath, name)
。
要修剪它以忽略任何名称为folderX
的文件夹,您可以执行以下操作。在os.walk
自上而下(默认值)时,您可以从dirs
列表中删除项目,以防止os.walk
查看这些目录。
for root, dirs, files in os.walk(rootdir):
for dir in dirs:
if not re.match(r'folderX[0-9]+$', dir):
dirs.remove(dir)
for file in files:
gain = xy.method(os.path.join(root, file))
print gain