1

ftp 経由で zip ファイルをダウンロードしようとしていますが、実際に zip を保存せずに内部のファイルを抽出します。これを行う方法はありますか?

4

4 に答える 4

6

zipfile.openを使用

アーカイブからメモリにメンバーを開きます。ZipFile は任意のファイルのようなオブジェクトをパラメーターとして受け入れるため、HTTP/FTP サーバーなどの多くのソースから取得できます。

import urllib
import io
from zipfile import ZipFile

mysock = urllib.urlopen('ftp://ftp.yourhost.com/spam.zip')  // check urllib for parameters
memfile = io.BytesIO(mysock.read())
with ZipFile(memfile, 'r') as myzip:
    f = myzip.open('eggs.txt')
    content = f.read()  // or other file-like commands

Python インメモリ zip ライブラリも確認してください

于 2013-01-25T17:35:42.677 に答える
4

このftplibモジュールを使用すると、FTP 経由でファイルをダウンロードできます。

このzipfileモジュールを使用すると、zip ファイルからファイルを抽出できます。

ここにキーがあります。このio.BytesIOクラスを使用すると、ファイルを必要とするものにメモリ内のバイトを渡すことができます。(Python 2.x では、StringIOモジュールは同様の機能を提供します。)

于 2013-01-25T17:34:49.123 に答える
0

zipfile モジュールは、zip ファイルから何かを抽出するために使用できます。zipfile へのアクセスには ftplib が使用されます。残念ながら、ftplib は、zipfile がファイルの内容にアクセスするために使用するファイルのようなオブジェクトを提供していません。zipを読み取ってメモリに保存できると思います。たとえば、文字列に保存し、ファイルのようなオブジェクト(StringIO)にラップすることができますディスク。

個々のファイルを保存する必要はなく、ファイルにアクセスする (つまり、読み取る) だけの場合は、zipfile を使用してこれを行うことができます。

于 2013-01-25T17:33:45.287 に答える