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

问题描述 投票:1回答:3

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

因此,我只需要glob.glob('not *_00000000')之类的东西。谁能帮忙?

python glob
3个回答
0
投票

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

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

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

0
投票

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

您可以获得的最接近的可能是“后8个字符中没有'0'”。如果那还不够好,您只需要获取完整列表并使用endswith进行过滤即可。

FWIW,全局模式规则是:

* match 0 or more "any character"
? match exactly one "any character"
[...] match character range
[!...] negated character range (all but the chars in the range
© www.soinside.com 2019 - 2024. All rights reserved.