循环浏览目录以找到匹配的文件

时间:2018-07-13 18:36:29

标签: python file loops iteration generator

我有一个模块,该模块遍历目录并找到匹配的文件,然后进行转换并发送电子邮件。该模块接受以下命令参数:

class Thing { constructor() { this.someFn = _.throttle(this.someFn, 2000); } someFn() { // your things... } } startDateendDate及其要搜索的格式,最终将是这样的:

fundCodes

目前,我的问题是citco_unmapped_positions_PUPSEN_2018-07-01_2018-07-09.csv参数将是一组资金:

fundCodes

以下方法引起问题:

['PUPSEN', 'POSUF', 'AGE']

上述方法的问题在于,一旦找到匹配的文件,它就立即返回,而没有用完其余的资金。

我目前在def positions_file_search(self, fundCodes): # Get a list of the files files = set(os.listdir(self.unmappedDir)) # loop through all the files and search for matching file for check_fund in fundCodes: # set a file pattern file_match = 'citco_unmapped_positions_{fund}_{start}_{end}.csv'.format(fund=check_fund, start=self.startDate, end=self.endDate) # look in the unmappeddir and see if there's a file with that name if file_match in files: # if there's a match, load unmapped positions as etl filename = os.path.join(self.unmappedDir, file_match) return self.read_file(filename) else: Logger.error('No file found with those dates/funds') 页面上这样称呼它:

__main__.py

它正在工作,但是,我需要找出一种对每个基金进行相同处理的方法。

注意:我不能做类似的事情:

unmapped_positions = alerter.positions_file_search(alerter.fundCodes)
    ... does something afterwards

由于将为每个基金重复电子邮件格式。我需要以某种方式修改我的方法。任何建议,将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以通过替换

将其功能转换为生成器
return self.read_file(filename)

使用

yield self.read_file(filename)

这将允许您编写:

for unmapped_positions in alerter.positions_file_search(alerter.fundCodes):
   ...

有关生成器的更多信息,请参见https://wiki.python.org/moin/Generators