使用Python zip文件从ZIP压缩包含特定字符串的文件

问题描述:

我有一个ZIP文件,我需要提取包含字符串“test”在文件名中的所有文件(通常是一个)。他们都是xlsx文件。使用Python zip文件从ZIP压缩包含特定字符串的文件

我正在使用Python zipfile。这是我的代码不能正常工作:

zip.extract(r'*\test.*\.xlsx$', './') 

的错误,我得到:

KeyError: "There is no item named '*\\\\test.*\\\\.xlsx$' in the archive" 

任何想法?

您在这里有许多问题:

  • r只是意味着把字符串作为一个原始字符串,它看起来像你可能会认为它会创建一个正则表达式对象; (在任何情况下,zip.extract()只接受字符串)
  • 在正则表达式开始时的*量词没有字符以匹配

用户需要通过ZIP文件索引手动循环和对阵文件名前您正则表达式:

from zipfile import ZipFile 
import re 
zip = ZipFile('myzipfile.zip') 
for info in zip.infolist(): 
    if re.match(r'.*test.*\.xlsx$', info.filename): 
     print info.filename 
     zip.extract(info) 

您还可以考虑使用shell文件通配语法:fnmatchcase(info.filename, '*.test.*.xls')(幕后它把它转换成一个正则表达式,但它使你的代码稍微简单一些)