【发布时间】:2012-10-16 01:27:39
【问题描述】:
我将一串长度为 4807100171 的 0 和 1 转储到 pickle 文件中,因为我之前遇到过 bitarray 的问题,想看看 pickle 是否可以解决我的问题。但是,在我加载它之后,它现在的长度是 512132875。
这是为什么呢?
我已经搜索过pickle是否有任何限制,但我没有找到任何东西......如果有众所周知的原因,我可能没有使用正确的关键词......
编辑:
您可以填充随机值的字符串b,这样您就可以使用您喜欢的技术获得 4807100171 的长度 - 可能类似于一个简单的 for 循环到 4807100171。我个人使用 Huffman 编码加密原始数据,但它会是一个我觉得在这里没有必要的长例子。
然后我将字符串b 转储如下:
b = ""
for i in range(4807100171)
b += 0
import cPickle as pickle
pickle.dump(b, open("string.p", "wb"), pickle.HIGHEST_PROTOCOL)
【问题讨论】:
-
为什么不能使用
bytearray并以二进制模式写入文件(wb)? -
你知道为什么字符串会被pickle.dump截断吗?
-
bytearray 似乎不是一个好方法...创建的文件是 4,81 Go... 这次我没有使用 pickle,而是这样做:使用 open('. ./string.p', 'wb') as f: f.write(bytearray(b))