python - 如何在 Python 3 中从字节缓冲区构造内存中的 TarFile 对象?

标签 python file python-3.x tar tarfile

是否可以使用包含 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 module完全满足您的需求。

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)

关于python - 如何在 Python 3 中从字节缓冲区构造内存中的 TarFile 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15857792/

相关文章:

python - easy_seq2seq中的train()方法什么时候停止?

python - Pandas 中的递归 SQL CTE 查询?

python - 转换为 csv 时仅从 xls 第一行删除\n 个字符 Python pandas

python - 如何使用Python编写一个mime类型为 `text/plain`的单字 rune 件?

java - 使用 apache fileutil.copyfile 复制文件

python - 安装google api python客户端时出错

python - Django 密码重置电子邮件主题

java - 文件到 MultipartFile 抛出 NullPointerException

python - df.iloc 未在 For 循环中赋值? ( Pandas )

python - 如何在 Vim 缓冲区中打印 python 代码的输出?