我在想如何告訴Python只使用通配符從zip文件夾中提取「.txt」文件。此代碼工作正常,我:Python Zip文件,通配符
extractor.extract("\websitefiles\test.hmtl")"
我如何使用相同的代碼以解當前目錄中的所有.txt文件?我在想這樣的事情:
extractor.extract(".*.txt")
但它失敗了..任何想法?
我在想如何告訴Python只使用通配符從zip文件夾中提取「.txt」文件。此代碼工作正常,我:Python 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)
您需要獲取ZIP中所有文件的列表,然後請求每個文件一次一個。 Zipfile有namelist()
方法給你這個列表。
首先,您需要文件名列表,使用namelist()
。 然後,您可以過濾的「* .txt」文件與txtfiles = fnmatch.filter(fn_list,"*.txt")
現在,你可以通過一個解壓縮文件之一:
extracts = [ extractor.extract(txt) for txt in txtfiles ]
它無法識別fn_list是什麼.. – user715578 2011-04-22 13:06:16
@ user715578:'fn_list == filename_list'它是通過'namelist()'獲得的列表 – joaquin 2011-04-22 15:12:42
使用功能namelist()
來獲取文件的名稱。然後從列表中選擇txt文件並逐個提取它們。
哦,我會怎麼做,如果我只是想提取.txt文件不超過3兆的? – user715578 2011-04-22 12:34:43
@ user715578:在由'ZipFile.getinfo(name)'返回的對象上使用'file_size'成員。 – Skurmedel 2011-04-22 12:40:29
呃,我超級迷路了。任何人都可以給我一個示例代碼?我只需要python來提取當前目錄下的.txt文件,這些文件不大於3兆字節。 – user715578 2011-04-22 12:59:36