有 zip 存檔 zip.zip,其中包含 zip1.zip 和 zip2.zip。在 zip1.zip 中是 0.txt,在 zip2.zip 中是 0.txt。在所有 O.txt 是字串“Hello world”。如何遍歷 zip.zip 以列印:“Hello World”“Hello World”
我有,但它不起作用:
from zipfile import ZipFile
with ZipFile(zip.zip, 'r') as zipObj:
listOfFileNames = zipObj.namelist()
for fileName in listOfFileNames:
# Check filename endswith csv
if fileName.endswith('.zip'):
with ZipFile(fileName) as z:
txt = z.read('0.txt')
print (txt)
除錯:
with ZipFile(zip.zip, 'r') as zipObj:
File "E:\python\Lib\zipfile.py", line 1265, in __init__
self._RealGetContents()
File "E:\python\Lib\zipfile.py", line 1328, in _RealGetContents
endrec = _EndRecData(fp)
File "E:\python\Lib\zipfile.py", line 264, in _EndRecData
fpin.seek(0, 2)
AttributeError: 'ZipFile' object has no attribute 'seek'
(更新):
預覽除錯問題是,在生產專案中,我傳遞的不是歸檔 zip.zip,而是 list_of_files,沒有指向選擇第一個檔案(list_of_files [0]):
with ZipFile(list_of_files[0], 'r') as zipObj:
uj5u.com熱心網友回復:
使用提取內容到記憶體io.BytesIO()
from zipfile import ZipFile
import io
with ZipFile('zip.zip', 'r') as zipObj:
for fileName in zipObj.namelist():
if fileName.endswith('.zip'):
content = io.BytesIO(zipObj.read(fileName)) # zip1.zip
with ZipFile(content) as z:
for txt in z.namelist():
if txt.endswith('.txt'):
txt = z.read('0.txt')
print (txt)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465252.html
下一篇:如何在C 中從右到左撰寫陣列
