51496


私は現在、以下のようなserval_process.csvというファイル中のカラム「テキストファイルURL」を参照して、そのリンク先のzipファイルの中にあるテキストファイルを読み込もうとしています。  
serval_process.csvと同じディレクトリ内に以下のようなpythonファイルを書いて、テキストファイルの読み込みを実践しようとしていたのですが、下のコードをどのように修正すれば目的を達成できるのかわからなくなってしまいました。

[code]

    import csv
    import zipfile
    with open('serval_process.csv', 'r') as f:
        reader = csv.reader(f)
        header = next(reader)  # ヘッダーを読み飛ばしたい時
    
        for row in reader:# 1行づつ取得できる
            local = row[2]　#localでzipファイルのある場所
            zf = zipfile.ZipFile(local,'r') #zipファイルを読む
            fp = zf.open('***.txt','r') #アーカイブ内のテキストを読みたいが、テキストの名前***が事前にはわからない...!?
            bindata = fp.read()
            text = bindata.decode(row[3])
            #この後テキストデータを整形した上で保存したい。
    
[/code]

どなたか最も効率的な方法をご存知の方がいれば、教えていただけると助かります。


CC BY-SA 4.0
2018-12-25T04:56:37.693
51494
2022-06-15T16:24:34.067
2022-06-15T16:24:34.067
31249
31249
question
python python3 テキストファイル 圧縮
Pythonを用いてzipファイル内のテキストファイル名がわからない場合に、テキストファイルを読み込むには?


`zf.infolist()`でファイル一覧を取得できますので、そこからテキストファイルを取得してはいかがでしょうか。

[code]

    import zipfile
    with zipfile.ZipFile('test.zip', 'r') as zf:
        files = [info.filename for info in zf.infolist() if info.filename.endswith('.txt')]
        for f in files:
            print(zf.read(f))
    
[/code]


CC BY-SA 4.0
2018-12-25T05:50:27.117
51496
2018-12-25T05:50:27.117
9820
51494
answer