1

zip アーカイブに含まれるすべてのファイルから特定の行 (2 行目) を抽出する必要があります。私の試みは(明らかに)うまくいきませんでした。これに関連して見つけたものはすべて、特定の文字列/変数を使用して、アーカイブされたファイルから抽出するコンテンツを絞り込むことでした-私の場合は使用できません。

私が得た最も近いものは、すべてのファイルからすべての行を抽出することです。

import zipfile

with zipfile.ZipFile() as input_zipfile:
    for f in input_zipfile.namelist():
         for line in input_zipfile.read(f).split("\n"):
               print line

理想的には、のようなものを使用してから、各ファイルの 2 行目を取得したいと思い.readlines()ます。print line[1]しかし、それはzipファイルでは機能しません。一時ファイルを作成してその構文を使用する必要がありますか、またはこれを回避する方法はありますか?

最後の行を に変更しようとしましたprint line[1]が、IndexError.

補足として、ファイルは大きくありません (4 ~ 12 行)。したがって、一時ファイルを作成することは問題外ではないと思いますが、あまりにも回りくどく、洗練されていないように思えます。

4

1 に答える 1

0

これはうまくいきます:

import zipfile

with zipfile.ZipFile() as input_zipfile:
    for f in input_zipfile.namelist():
        lines = input_zipfile.read(f).split("\n")
        print lines[1]

(元のコードは、2番目を印刷するだけでなく、理由もなく行のリストをループします)

于 2013-03-20T16:37:08.150 に答える