首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Python3解压内存中的数据?

如何使用Python3解压内存中的数据?
EN

Stack Overflow用户
提问于 2020-10-28 18:14:13
回答 1查看 46关注 0票数 0

我得到了一些以字节为单位的tar数据,并希望在不将其写入文件系统的情况下读取它。

将其写入文件系统是可行的:

代码语言:javascript
运行
复制
with open('out.tar', 'wb') as f:
     f.write(data)

然后,在shell中:tar -xzvf out.tar

但会出现以下错误:

代码语言:javascript
运行
复制
import tarfile
tarfile.open(data, 'r')

'''
  File ".../lib/python3.7/tarfile.py", line 1591, in open
    return func(name, filemode, fileobj, **kwargs)
  File ".../lib/python3.7/tarfile.py", line 1638, in gzopen
    fileobj = gzip.GzipFile(name, mode + "b", compresslevel, fileobj)
  File ".../lib/python3.7/gzip.py", line 163, in __init__
    fileobj = self.myfileobj = builtins.open(fil
'''

读取内存中的tar的正确方法是什么?

更新

以下是工作原理:

代码语言:javascript
运行
复制
from io import BytesIO
tarfile.open(fileobj=BytesIO(data), 'r')

为什么?

tarfile.open应该能够处理字节。我自己将字节转换为一个类似文件的对象,然后告诉tarfile.open使用这个类似文件的对象是可行的,但是为什么需要这种转换呢?基于字节的原始API什么时候有效,什么时候无效?

EN

回答 1

Stack Overflow用户

发布于 2020-10-28 21:05:09

你可以使用tarfile,从那里你可以使用字节流读取数据。

代码语言:javascript
运行
复制
import tarfile
with tarfile.open(fileobj = BytesIO(your_file_name)) as tar:
   for tar_file in tar:
      if (tar_file.isfile()):
         inner_data = tar.extractfile(tar_file).read().decode('utf-8')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64570709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档