在目录中搜索两种不同的文件格式

时间:2018-07-10 18:58:20

标签: python operating-system

我有以下方法:

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.csvunmapped_PWMA_2018-07-01_2018-07-09.csv

注意:fundCodes参数将是“ fundCodes”的数组

现在,我希望它能够查找另一种格式,如下所示:

citco_unmapped_trades_2018-07-01_2018-07-09我在设法弄清楚如何重写该函数时遇到了一些麻烦,以便它可以查找两种可能的格式,如果找到了一种格式,则继续进行self.read_file(file_match)方法。 (如果找到了两者,则可能必须执行一些错误处理)。有什么建议吗?

2 个答案:

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