【发布时间】:2009-09-07 14:33:56
【问题描述】:
我在 python 中编写了一个小型加密模块,其任务是加密文件并将结果放入 tar 文件中。要加密的原始文件可以很大,但这不是问题,因为我的程序一次只需要处理一小块数据,可以即时加密并存储。
我正在寻找一种避免分两次执行的方法,首先将所有数据写入临时文件,然后将结果插入 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。
有什么提示吗?
【问题讨论】: