我有以下方法:
def file_match(self, fundCodes):
# Get a list of the files
files = os.listdir(self.unmappedDir)
# loop through all the files and search for matching file
for check_fund in fundCodes:
# Format of file to look for
file_match = 'unmapped_{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
return self.read_file(file_match)
该方法将寻找可以匹配这种格式的文件:
unmapped_A-AGEI_2018-07-01_2018-07-09.csv
或
unmapped_PWMA_2018-07-01_2018-07-09.csv
注意:fundCodes
参数将是“ fundCodes”的数组
现在,我希望它能够查找另一种格式,如下所示:
citco_unmapped_trades_2018-07-01_2018-07-09
我在设法弄清楚如何重写该函数时遇到了一些麻烦,以便它可以查找两种可能的格式,如果找到了一种格式,则继续进行self.read_file(file_match)
方法。 (如果找到了两者,则可能必须执行一些错误处理)。有什么建议吗?
答案 0 :(得分:1)
可以使用多种方法来执行此操作,这尤其取决于您可能进行的进一步增强。最简单,最直接的方法是列出允许的文件名列表,并一一检查:
file_matches = [
'unmapped_{fund}_{start}_{end}.csv'.format(fund=check_fund, start=self.startDate, end=self.endDate),
'citco_unmapped_{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
for file_match in file_matches:
if file_match in files:
# if there's a match, load unmapped positions as etl
return self.read_file(file_match)
答案 1 :(得分:0)
我在寻找其他问题的答案时遇到了这个问题。请记住,我在几分钟内就写完了。我相信它可以改善。您应该能够复制并粘贴并运行它。您只需要创建文件或将脚本放在与文件相同的目录中即可。随意修改您想要的方式。这可能不是最佳解决方案,但应该可以。我写了这个,所以您可以立即对其进行测试。您只需对其进行修改,以使其在程序中正确运行。如果您需要我详细说明,请在下面评论。
10 - - - - - - - - - -
9 - - - - - - - - - -
8 - - - - - - - - - -
7 - - - - - - - - - -
6 - - - * - - - - - -
5 - - - - - - - - - -
4 - - - - - - - - - -
3 - - - - - - - - - -
2 - - - - - - - - - -
1 - - - - - - - - - -
A B C D E F G H I J