圧縮されたデータファイルがあります(すべてフォルダー内にあり、圧縮されています)。解凍せずに各ファイルを読みたい。いくつかの方法を試しましたが、Zipファイルにフォルダを入力するのに何も機能しません。どうすればそれを達成できますか?
Zipファイルにフォルダがない場合:
with zipfile.ZipFile('data.Zip') as z:
for filename in z.namelist():
data = filename.readlines()
1つのフォルダの場合:
with zipfile.ZipFile('data.Zip') as z:
for filename in z.namelist():
if filename.endswith('/'):
# Here is what I was stucked
namelist()
アーカイブ内のすべてのアイテムのリストを再帰的に返します。
os.path.isdir() :を呼び出すと、アイテムがディレクトリであるかどうかを確認できます。
import os
import zipfile
with zipfile.ZipFile('archive.Zip') as z:
for filename in z.namelist():
if not os.path.isdir(filename):
# read the file
with z.open(filename) as f:
for line in f:
print line
お役に立てば幸いです。
Alecのコードを機能させました。私はいくつかのマイナーな編集を行いました:(これはパスワードで保護されたzipファイルでは機能しないことに注意してください)
import os
import sys
import zipfile
z = zipfile.ZipFile(sys.argv[1]) # Flexibility with regard to zipfile
for filename in z.namelist():
if not os.path.isdir(filename):
# read the file
for line in z.open(filename):
print line
z.close() # Close the file after opening it
del z # Cleanup (in case there's further work after this)