ELIF语句被跳过,转而支持ELSE

时间:2019-06-17 16:05:25

标签: python-3.x

我正在写一些使用正则表达式将输出匹配到给定扩展名的语句。我的For循环似乎工作正常,我为每个文件都返回了一个答案,如果我取出一个或加一个,则得到了回报。 不过似乎发生的是,我的第一个文件被拾取,成功匹配并给出了正确的输出。循环然后获取下一个文件,对照第一条语句进行检查,然后跳过两个ELIF,并根据我的ELSE给出并输出。谁能指出原因,或者如果我错了,实际上是怎么回事?

def extmatch():

    global dircontents

    for file in dircontents:
        dircontents = re.search(".+\sbreakout.*\.ttx", file)

        if dircontents:
            print('File is for TIA')

        elif dircontents:
            dircontents = re.search('\w+\.csv+$', file)

            if dircontents:
                print('File is for NMFTA')

        elif dircontents:
            dircontents = re.search('\w+.\.txt+$', file)

            if dircontents:
                print('File is for NMFTA')

        else:
            print('File type not recognized.')

['061419license breakout_ibc_v3_0116.ttx', '2019-06-17_7-49-21.jpg', 'SampleCSV.csv', 'script_test.txt'] <---这些是指定目录中的文件

  

文件用于TIA

     

无法识别文件类型。 <---似乎匹配第一个文件之后的每个文件的ELSE

     

无法识别文件类型。

     

无法识别文件类型。

1 个答案:

答案 0 :(得分:0)

您可能想要这样的东西:

PURGE RECYCLEBIN;

甚至是这样:

def extmatch(dircontents):
    for filename in dircontents:
        if filename.lower().endswith(".ttx"):
            print('File is for TIA')
        elif filename.lower().endswith(".csv"):
            print('File is for NMFTA')
        elif filename.lower().endswith(".txt"):
            print('File is for NMFTA')
        else:
            print('File type not recognized.')

避免全局变量。如果需要将信息传递给函数,请使用参数。