我有一个模块,该模块遍历目录并找到匹配的文件,然后进行转换并发送电子邮件。该模块接受以下命令参数:
class Thing {
constructor() {
this.someFn = _.throttle(this.someFn, 2000);
}
someFn() {
// your things...
}
}
,startDate
和endDate
及其要搜索的格式,最终将是这样的:
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
由于将为每个基金重复电子邮件格式。我需要以某种方式修改我的方法。任何建议,将不胜感激。
答案 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