微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Python3解压缩内存中的数据? 更新

如何解决如何使用Python3解压缩内存中的数据? 更新

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

将其写入文件系统可以正常工作

with open('out.tar','wb') as f:
     f.write(data)

然后,在外壳中:tar -xzvf out.tar

但是出现以下错误

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的正确方法

更新

以下作品:

from io import BytesIO
tarfile.open(fileobj=BytesIO(data),'r')

为什么?

tarfile.open应该能够使用字节。我自己将字节转换为类似文件的对象,然后告诉tarfile.open使用类似文件的对象有效,但是为什么需要进行转换?原始的基于字节的API什么时候起作用,什么时候不起作用?

解决方法

您可以使用tarfile,然后可以从其中使用Byte流读取数据。

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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。