是否有可能,而无需将tar文件写入到磁盘,然后再次打开它来创建在使用含有焦油数据的缓冲存储器一个tar文件对象? 我们得到通过socket发送的字节数。
事情是这样的:
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)
注:原因做这一块是我们最终希望能够与多个线程同时要做到这一点,因此,使用临时文件可能会被重写,如果两个线程试图在同一时间做这件事。
谢谢你的任何及所有的帮助!
BytesIO()从IO模块不正是你所需要的。
import tarfile, io
byte_array = client.read_bytes()
file_like_object = io.BytesIO(byte_array)
tar = tarfile.open(fileobj=file_like_object)
# use "tar" as a regular TarFile object
for member in tar.getmembers():
f = tar.extractfile(member)
print(f)
当然,这样的事情:
import io
io_bytes = io.BytesIO(byte_array)
tar = tarfile.open(fileobj=io_bytes, mode='r')
(调整mode
,以适应你tar文件的格式,例如,可能`模式=“R:GZ”等)