将Python列表转储为文件作为代码文本

时间:2013-07-18 12:36:31

标签: python

说,我有一个python列表:

arr = [
  [1,2,3,4],
  [11,22,33,44]
]

我想将此对象转储到包含代码的文件中,以便我可以尽快eval(),文件的内容应为:

[
  [1,2,3,4],
  [11,22,33,44]
]

我不想使用pickle,因为它太慢了。

4 个答案:

答案 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文件加载速度相当快(分层词典/列表有数千个条目)。