说,我有一个python列表:
arr = [
[1,2,3,4],
[11,22,33,44]
]
我想将此对象转储到包含代码的文件中,以便我可以尽快eval()
,文件的内容应为:
[
[1,2,3,4],
[11,22,33,44]
]
我不想使用pickle
,因为它太慢了。
答案 0 :(得分:3)
print repr(arr)
。
当然,泡菜不是特别慢。并且,正如zhangyangyu所说,虽然这适用于列表,但它不适用于repr
不能eval
'的对象。
答案 1 :(得分:3)
我认为您可以使用repr
,然后将结果写入文件。
再版(...)
repr(object) - >串
返回对象的规范字符串表示。
对于大多数对象类型,eval(repr(object))== object。
但这不安全,如果文件被更改,可能会发生一些可怕的事情。
而且,你文件中的列表似乎是格式化的。当发生这种情况时,你如何将其转换回来。当您回读内容时,您必须添加逻辑以查看字符串是否表示列表结束。如果它们在一行中,则可能更容易。
因此,使用一些现有模块并不是一个坏主意,而且是通常的方式。
答案 2 :(得分:2)
使用cPickle
。它比pickle
快几个数量级。
答案 3 :(得分:1)
使用cPickle
,您可以执行import cPickle as pickle
,以便不必更改现有代码。我经常使用cPickle和20 + MB文件加载速度相当快(分层词典/列表有数千个条目)。