Python fnmatch不适用于变量,但适用于静态字符串

Python fnmatch不适用于变量,但适用于静态字符串,python,regex,linux,python-2.7,Python,Regex,Linux,Python 2.7,以下代码找不到文件patterns中定义的任何模式 #!/usr/bin/env python import os import fnmatch patternFile = open('patterns', 'r') patterns = patternFile.readlines() for filename in os.listdir('.'): for pattern in patterns: if fnmatch.fnmatch(filename, patte

以下代码找不到文件
patterns
中定义的任何模式

#!/usr/bin/env python

import os
import fnmatch

patternFile = open('patterns', 'r')
patterns = patternFile.readlines()
for filename in os.listdir('.'):
    for pattern in patterns:
        if fnmatch.fnmatch(filename, pattern):
            print "FOUND!"
我的
模式
文件看起来像

*test
foo
下面使用静态模式字符串修改的代码可以正常工作。正如预期的那样,可以找到名为
foofile
的文件

patternFile = open('patterns', 'r')
patterns = patternFile.readlines()
for filename in os.listdir('.'):
    if fnmatch.fnmatch(filename, '*test'):
        print "FOUND!"

有人知道这个问题吗?

readlines
包括换行符
\n
在每行末尾,您需要执行以下操作:

if fnmatch.fnmatch(filename, pattern.strip('\n\r'):