我在 python 中编写了一个小型加密模块,其任务是加密文件并将结果放入 tarfile。要加密的原始文件可以很大,但这不是问题,因为我的程序一次只需要处理一小块数据,可以即时加密并存储。
我正在寻找一种方法来避免分两次执行,首先将所有数据写入临时文件,然后将结果插入 tarfile。
基本上我执行以下操作(其中 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。
任何提示如何做到这一点?