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

Python:打开与模式不匹配的所有文件,python,glob,Python,Glob,我试图打开目录中与模式不匹配的所有文件。目录中会有一些文件,如x_0192910,y_18329123和z_00000000;我想打开所有不以“00000000”结尾的文件,八个零。我一直在尝试使用glob.glob(),但无法正确使用正则表达式。我尝试过像*^0{8,8}和*[!0]这样的方法,但我不确定如何构造正确的表达式 总之,我只需要像glob.glob('not*.\u00000000')这样的东西。有人能帮忙吗?您是否考虑过过滤glob返回的列表?比如: for e in glob.

我试图打开目录中与模式不匹配的所有文件。目录中会有一些文件,如
x_0192910
y_18329123
z_00000000
;我想打开所有不以“
00000000
”结尾的文件,八个零。我一直在尝试使用
glob.glob()
,但无法正确使用正则表达式。我尝试过像
*^0{8,8}
*[!0]
这样的方法,但我不确定如何构造正确的表达式


总之,我只需要像
glob.glob('not*.\u00000000')
这样的东西。有人能帮忙吗?

您是否考虑过过滤
glob
返回的列表?比如:

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

您可以使用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

全局表达式与正则表达式有着根本的不同

最接近的可能是“在最后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

regex
^(?。*?0{8}$)。+$
注意glob模式不是regex。我很想把这个字符串写成
'.'+8*'0'
;它不短很多,但更容易看到,正好有八个零。