Мне было интересно, как я могу сказать Python извлекать только файлы ".txt" из ZIP-папки, используя подстановочный знак. Этот код отлично работает для меня:
extractor.extract("\websitefiles\test.hmtl")"
Как я могу использовать этот же код для извлечения всех .txt файлов в этом текущем каталоге? Я думал примерно так:
extractor.extract(".*.txt")
но он не сработал. Любые идеи???
Мне просто нужен python для извлечения файлов .txt в текущем каталоге, размер которых не превышает 3 мегабайт.
#!/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)
Сначала вам понадобится список имен файлов, используя namelist()
.
Затем вы можете отфильтровать файлы "*.txt" с помощью txtfiles = fnmatch.filter(fn_list,"*.txt")
Теперь вы можете извлекать файлы по одному:
extracts = [ extractor.extract(txt) for txt in txtfiles ]
Вам нужно будет получить список всех файлов в ZIP файле, а затем спросить каждого, по одному за раз. Zipfile имеет метод namelist()
, чтобы предоставить вам этот список.
file_size
элемент на объект , возвращаемый ZipFile.getinfo(name)
.
Используйте функцию namelist()
, чтобы получить имена файлов. Затем выберите txt файлы из списка и извлеките их один за другим.
fn_list == filename_list
это список, полученный с помощьюnamelist()