37

TarFile をディスクに書き込んで再度開くことなく、tar データを含むバッファを使用してメモリ内に TarFile オブジェクトを作成することは可能ですか? ソケット経由で送信されたバイトを取得します。

このようなもの:

import tarfile
byte_array = client.read_bytes()
tar = tarfile.open(byte_array) # how to do this?
# use "tar" as a regular TarFile object
for member in tar.getmembers():
    f = tar.extractfile(member)
    print(f)

注: これを行う理由の 1 つは、最終的には複数のスレッドで同時にこれを実行できるようにするためです。そのため、2 つのスレッドが同時に実行しようとすると、一時ファイルの使用が無効になる可能性があります。

助けてくれてありがとう!

4

2 に答える 2

10

確かに、このようなもの:

import io

io_bytes = io.BytesIO(byte_array)

tar = tarfile.open(fileobj=io_bytes, mode='r')

(tar ファイルのフォーマットに合わせて調整modeしてください。たとえば、`mode='r:gz' など)。

于 2013-04-07T02:17:47.883 に答える