2016-02-20 98 views
0

给定一个称为SI 01130 TN 72文件 - 2016年2月19日在当前工作目录,以及以下:fnmatch.fnmatch()未检测正确的文件(或根本检测无)

import os 
import fnmatch 

def matching_current_instruction_id_in_baseline(_id): 
    for _file in os.listdir('.'): 
     if fnmatch.fnmatch(_file, 'SI 01130 TN 72*'): 
      return file 
     else: 
      continue 
    return None 

为什么以下文件没有找到(所有匹配的文件都是由于某种原因被称为'x'的文件)。

In[50]: matching_current_instruction_id_in_baseline('SI 01130 TN 72') 
Out[50]: 'x 
+1

不是一个答案,但glob会是一个更好的方法,特别是iglob,如果你只是想看看是否有任何匹配,你的其他继续也是多余的。 fnmatch也会匹配发布的字符串,以便进行其他操作。 –

+1

'return next(glob.iglob(“path_to /'SI 01130 TN 72 *'”),None)''将完成当前函数的所有功能。 –

+1

您正在使用名为'_file'的变量,但是返回'file'。修复后,它适用于我。 – jsfan

回答

1

你迭代和测试_file,但返回file,这恰好是在Python 2。不知道为什么它打印'x一个内置的功能,但是这就是为什么你没有看到你所期望的。