问题描述
我有一个 glob 模式,我试图用它来匹配和选择一些文件。我正在测试它,它似乎只适用于通配符。文件示例如下,其中包括其他未列出但扩展名不同且我不需要的文件;
240721_124607_1000_Y1_B.txt.bz2
240721_124607_1000_Z1_B.txt.bz2
240721_124607_1000_X1_B.txt.bz2
我使用的 glob 模式获取所有带有 bz2 扩展名的文件,即
files = glob.glob('Z:/{}/{}/DL/*.txt.bz2'.format(directory,folder))
以上有效,但我想缩小范围以仅获取 ZI 文件。我尝试了以下模式,但它们不起作用
files = glob.glob('Z:/{}/{}/DL/?Z1.txt.bz2'.format(directory,folder))
也试过了
files = glob.glob('Z:/{}/{}/DL/Z1*.txt.bz2'.format(directory,folder))
也试过了
files = glob.glob('Z:/{}/{}/DL/?Z1*.txt.bz2'.format(directory,folder))
以上都行不通。
解决方法
?
匹配单个字符,*
匹配任意数量的字符(甚至没有)。由于您希望匹配包含 Z1
的任何名称,因此您需要的表达式是:
files = glob.glob('Z:/{}/{}/DL/*Z1*.txt.bz2'.format(directory,folder))
请注意,这也将匹配任何类似的内容
Z1_Y1_B.txt.bz2
2407Z1_124607_1000_Y1_B.txt.bz2
2407Z1_124607_1000_X1_Z1.txt.bz2
etc.
只要在 Z1
之前和最后一个斜杠之后有 .txt.bz2
,它就会匹配