web-dev-qa-db-ja.com

Python)のzipフォルダー内のテキストファイルを読み取る方法

圧縮されたデータファイルがあります(すべてフォルダー内にあり、圧縮されています)。解凍せずに各ファイルを読みたい。いくつかの方法を試しましたが、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
12
ChuNan

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

お役に立てば幸いです。

20
alecxe

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)
4
RichS