【问题标题】:python tarred folder streampython tarred 文件夹流
【发布时间】:2012-11-26 20:00:00
【问题描述】:

有没有办法对文件夹进行 tar 并获取 tar 流而不是 tar 文件? 我曾尝试使用 tar 模块,但它直接返回 tarred 文件。

with tarfile.open("zipped.tar",'w|') as tar:
    for base_root, subFolders, files in os.walk('test'):
            for j in files:
                filepath = os.path.join(base_root,j)
                if os.path.isfile(filepath):
                    with open(filepath, 'rb') as file:
                        size = os.stat(filepath).st_size
                        info = tarfile.TarInfo()
                        info.size = size
                        info.name = filepath
                        if(size <= chunck_size):
                            data = file.read(info.size)
                            fobj = StringIO.StringIO(data)
                            tar.addfile(info, fobj)
                        else:
                            data = ""
                            while True:
                                temp_data = file.read(chunck_size)
                                if temp_data == '':
                                    break
                                data = data + temp_data
                            fobj = StringIO.StringIO(data)
                            tar.addfile(info, fobj) 

【问题讨论】:

    标签: python stream tar


    【解决方案1】:

    根据the documentationopen 可以接受fileobj 参数:

    如果指定了 fileobj,则它用作以二进制模式打开的文件对象的替代名称。它应该在位置 0。

    所以你可以写这个,然后使用缓冲区对象。

    import io
    buffer = io.BytesIO()
    with tarfile.open("zipped.tar",'w|', fileobj=buffer) as tar:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 2018-06-07
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多