是否可以使用包含 tar 数据的缓冲区在内存中创建 TarFile 对象,而无需将 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)
注意:这样做的原因之一是我们最终希望能够同时对多个线程执行此操作,因此如果两个线程尝试同时执行此操作,则可能会覆盖使用临时文件。
感谢您提供的所有帮助!
BytesIO() 来自IO模块 http://docs.python.org/3/library/io.html正是您所需要的。
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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)