Python Zip文件,通配符
我在想怎么让Python从一个压缩文件中提取出所有的“.txt”文件,使用通配符来实现。这个代码对我来说运行得很好:
extractor.extract("\websitefiles\test.hmtl")"
我想知道怎么用同样的代码来提取当前目录下的所有.txt文件?我在考虑像这样做:
extractor.extract(".*.txt")
但是这样没成功……有什么想法吗???
4 个回答
2
你需要先获取ZIP文件里面所有文件的列表,然后一个一个地询问每个文件。Zipfile库里有一个叫namelist()
的方法,可以帮你得到这个文件列表。
6
首先,你需要一个文件名的列表,可以用 namelist()
来获取。接着,你可以用 txtfiles = fnmatch.filter(fn_list,"*.txt")
来筛选出所有的 "*.txt" 文件。现在你可以一个一个地提取这些文件了:
extracts = [ extractor.extract(txt) for txt in txtfiles ]
4
我只需要用Python来提取当前目录下不超过3兆字节的.txt文件。
#!/usr/bin/env python
import zipfile
from contextlib import closing
MiB = 2**20 # mebibyte
with closing(zipfile.ZipFile("example.zip")) as zfile:
for info in zfile.infolist():
if info.filename.endswith('.txt') and 0 < info.file_size <= 3*MiB:
zfile.extract(info)