Python:打开所有不匹配模式的文件
我想打开一个文件夹里所有不符合某个模式的文件。这个文件夹里会有像 x_0192910
、y_18329123
和 z_00000000
这样的文件;我想打开所有不以 '00000000
' 结尾的文件,也就是不以八个零结尾的文件。我试着用 glob.glob()
来实现,但我不知道怎么写正则表达式。我试过 *^0{8,8}
和 *[!0]
这样的写法,但我不太确定怎么构造正确的表达式。
所以总结一下,我只需要类似 glob.glob('not *_00000000')
这样的东西。有没有人能帮帮我?
3 个回答
0
通配符和正则表达式是完全不同的东西。
你能做到的最接近的事情可能就是“最后8个字符里没有‘0’”。如果这个方法不够好,那你就只能获取完整的列表,然后用 endswith
来筛选。
顺便说一下,通配符的规则是:
* match 0 or more "any character"
? match exactly one "any character"
[...] match character range
[!...] negated character range (all but the chars in the range
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