Python中使用glob模式匹配含Z1的.txt.bz2文件失败如何解决
Python glob匹配含指定字符的文件解决方案
现有规则匹配失败原因
你之前尝试的三个模式均不符合目标文件名的结构特征:
?Z1.txt.bz2:?仅匹配1个任意字符,且规则限定Z1后直接接.txt后缀,和实际文件名中Z1前有长前缀、后还有_B内容的结构完全不符Z1*.txt.bz2:要求文件名以Z1开头,但你的目标文件均以日期前缀开头,Z1出现在文件名中间位置,因此无法匹配?Z1*.txt.bz2:还是仅用1个?匹配Z1前的内容,无法覆盖Z1前面的长前缀,因此匹配无效
正确匹配规则
*通配符可以匹配任意长度(含0)的任意字符,要匹配文件名任意位置包含Z1的.txt.bz2文件,直接在Z1前后都加*即可:
files = glob.glob('Z:/{}/{}/DL/*Z1*.txt.bz2'.format(directory, folder))
如果需要更精准的匹配,避免文件名其他位置意外出现Z1导致误匹配,可以结合你示例文件的下划线分隔结构,限定Z1前后为下划线:
# 仅匹配被下划线包裹的Z1,适配你提供的`xxx_xxx_xxx_Z1_xxx`的命名规则 files = glob.glob('Z:/{}/{}/DL/*_Z1_*.txt.bz2'.format(directory, folder))
内容的提问来源于stack exchange,提问作者Kamikaze K
相关产品推荐
相关产品推荐

