Sef*_*efu 21 python file tar tarfile python-3.x
是否可以使用包含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)
Run Code Online (Sandbox Code Playgroud)
注意:执行此操作的原因之一是我们最终希望能够同时使用多个线程执行此操作,因此如果两个线程同时尝试执行此操作,则可能会覆盖临时文件.
感谢您的帮助!
小智 30
来自IO模块的 BytesIO()可以完全满足您的需求.
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)
Run Code Online (Sandbox Code Playgroud)
当然,是这样的:
import io
io_bytes = io.BytesIO(byte_array)
tar = tarfile.open(fileobj=io_bytes, mode='r')
Run Code Online (Sandbox Code Playgroud)
(调整mode
以适合您的tar文件的格式,例如,可能是'mode ='r:gz'等)
归档时间: |
|
查看次数: |
13213 次 |
最近记录: |