迭代文件夹,并从每个文件中使用方法python中的一个特定文件

时间:2014-06-26 13:55:18

标签: python

我想要做的是遍历目录中的文件夹,并在每个文件夹中找到一个文件'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'中的所有其他文件夹,那将是很好的。 谢谢你的帮助!

1 个答案:

答案 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