Python:打开与模式不匹配的所有文件

时间:2014-10-10 10:34:00

标签: python glob

我正在尝试打开目录中与模式不匹配的所有文件。该目录将包含文件,如x_0192910,y_18329123和z_00000000;我想打开所有不以'00000000'结尾的文件,八个零。我一直在尝试使用glob.glob(),但我无法正确使用正则表达式。我尝试过类似* ^ 0 {8,8}和* [!0]的东西,但我不确定如何构造正确的表达式。

总而言之,我只需要像glob.glob('not * _00000000')这样的东西。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

您是否考虑过滤glob返回的列表?类似的东西:

for e in glob.glob('*'):
    if e[-9:] == "_00000000":
        continue
    # Do whatever you like

答案 1 :(得分:0)

您可以使用endswith和filter:

import glob
for i in filter(lambda x:not x.endswith('_00000000'), glob.glob('*.*')):
    print i

您还可以使用列表理解:

import glob
for i in [e for e in glob.glob('*.*') if not e.endswith('_00000000')]:
    print i

答案 2 :(得分:0)

Globs与正则表达式根本不同。

你最接近的可能是"没有' 0'在最后8个字符"。如果这还不够好,您只需使用endswith获取完整列表并进行过滤。

FWIW,glob模式规则是:

* match 0 or more "any character"
? match exactly one "any character"
[...] match character range
[!...] negated character range (all but the chars in the range