以下代码找不到文件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!"

我的pattern文件看起来像
*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'):

关于python - fnmatch不适用于变量,但适用于静态字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20316300/

10-11 16:40