使用Python zipfile从ZIP中提取包含文件名上特定字符串的文件
我有一个ZIP文件,需要提取文件名中包含字符串“test”的所有文件(通常是一个)。它们都是xlsx文件 我正在使用Python zipfile来实现这一点。这是我的代码,不起作用:使用Python zipfile从ZIP中提取包含文件名上特定字符串的文件,python,regex,zipfile,Python,Regex,Zipfile,我有一个ZIP文件,需要提取文件名中包含字符串“test”的所有文件(通常是一个)。它们都是xlsx文件 我正在使用Python zipfile来实现这一点。这是我的代码,不起作用: zip.extract(r'*\test.*\.xlsx$', './') 我得到的错误是: KeyError: "There is no item named '*\\\\test.*\\\\.xlsx$' in the archive" 有什么想法吗?您在这里遇到了多个问题: r简单的意思是将字符串作为原
zip.extract(r'*\test.*\.xlsx$', './')
我得到的错误是:
KeyError: "There is no item named '*\\\\test.*\\\\.xlsx$' in the archive"
有什么想法吗?您在这里遇到了多个问题:
简单的意思是将字符串作为原始字符串处理,看起来您可能认为它创建了一个正则表达式对象;(在任何情况下,r
只接受字符串)zip.extract()
- 正则表达式开头的
量词前面没有要匹配的字符*
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文件球形语法:<代码> fnMatcCase[ff.FiNeNAM','*.Test.*xL')(在后台将它转换成正则表达式,但这会使代码稍微简单)
这里有多个问题:
简单的意思是将字符串作为原始字符串处理,看起来您可能认为它创建了一个正则表达式对象;(在任何情况下,r
只接受字符串)zip.extract()
- 正则表达式开头的
量词前面没有要匹配的字符*
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文件球形语法:<代码> fnMatcCase[ff.FiNeNAM','*.Test.*xL')(在幕后,它将它转换成正则表达式,但这会使代码稍微简单)