我正在尝试打开目录中与模式不匹配的所有文件。该目录中将包含文件,例如x_0192910
,y_18329123
和z_00000000
。我想打开所有不以'00000000
'结尾的文件,八个零。我一直在尝试使用glob.glob()
,但我无法正确使用正则表达式。我已经尝试过类似*^0{8,8}
和*[!0]
的事情,但是我不确定如何构造正确的表达式。
因此,我只需要glob.glob('not *_00000000')
之类的东西。谁能帮忙?
您是否考虑过过滤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
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