如何在python中不使用临时文件的情况下将大量数据写入tarfile中

2024-04-22

我用 python 编写了一个小型加密模块,其任务是对文件进行加密并将结果放入 tarfile 中。要加密的原始文件可以很大,但这不是问题,因为我的程序一次只需要处理一小块数据,可以即时加密并存储。

我正在寻找一种方法来避免分两次完成,首先将所有数据写入临时文件,然后将结果插入 tar 文件。

基本上我执行以下操作(其中generator_encryptor是一个简单的生成器,它生成从源文件读取的数据块)。 :

t = tarfile.open("target.tar", "w")
tmp = file('content', 'wb')
for chunk in generator_encryptor("sourcefile"):
   tmp.write(chunks)
tmp.close()
t.add(content)
t.close()

我有点恼火必须使用临时文件,因为我归档它应该很容易直接在 tar 文件中写入块,但是将每个块收集在单个字符串中并使用类似 t.addfile('content', StringIO( bigcipheredstring)似乎被排除在外,因为我不能保证我有足够的内存来存储旧的bigcipheredstring。

有任何关于如何做到这一点的提示吗?


您可以创建一个自己的类似文件的对象并传递给TarFile.addfile。您的类文件对象将在运行中动态生成加密内容fileobj.read() method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在python中不使用临时文件的情况下将大量数据写入tarfile中 的相关文章

随机推荐