用Python将列表保存到文件中的其他方法

用Python将列表保存到文件中的其他方法,python,file,list,Python,File,List,我试图将列表保存到一个文件中,这样当我再次加载和读取文件时,我就可以得到我的列表。换句话说,数据类型在保存和加载时不会改变。因为现在,我使用“写入”将列表保存到文件中,当我尝试将其加载回内存时,我得到的是字符串,而不是真正的列表。有没有办法在加载后将它们转换回列表?或者我应该改变将列表保存到文件中的方式。请注意,我不想使用Pickle。 谢谢 编辑:我的pickle问题是我必须在代码的不同部分一步一步地添加我的列表。因此,我不能一次拥有所有的列表,所以我可以对它们进行pickle。这就是我遇到的

我试图将列表保存到一个文件中,这样当我再次加载和读取文件时,我就可以得到我的列表。换句话说,数据类型在保存和加载时不会改变。因为现在,我使用“写入”将列表保存到文件中,当我尝试将其加载回内存时,我得到的是字符串,而不是真正的列表。有没有办法在加载后将它们转换回列表?或者我应该改变将列表保存到文件中的方式。请注意,我不想使用Pickle。 谢谢 编辑:我的pickle问题是我必须在代码的不同部分一步一步地添加我的列表。因此,我不能一次拥有所有的列表,所以我可以对它们进行pickle。这就是我遇到的问题。它给了我错误的答案,我想这是因为pickle需要所有信息放在一个地方,并立即将它们添加到文件中。(?)
我的列表中只有整数。

如果您信任输入,请使用中的读取文件并使用:

您还可以使用(python 2.6+),这比我的
eval
建议更安全

从文档中:

安全地计算表达式节点或 包含Python的字符串 表情。字符串或节点 所提供的信息可能仅包括以下内容: 以下Python文本结构: 字符串、数字、元组、列表、, 口授、布尔语和无语

这可用于安全评估 包含Python表达式的字符串 来自不受信任的来源,但没有 需要自己解析这些值

例如:

>>> import ast
>>> a_list = [1, 3, 5]
>>> with open('test.txt', 'w') as f:
...     f.write(repr(a_list))
... 
>>> with open('test.txt') as f:
...     read_list = ast.literal_eval(f.readlines()[0])
... 
>>> read_list
[1, 3, 5]

如果您信任输入,请使用中的读取文件并使用:

您还可以使用(python 2.6+),这比我的
eval
建议更安全

从文档中:

安全地计算表达式节点或 包含Python的字符串 表情。字符串或节点 所提供的信息可能仅包括以下内容: 以下Python文本结构: 字符串、数字、元组、列表、, 口授、布尔语和无语

这可用于安全评估 包含Python表达式的字符串 来自不受信任的来源,但没有 需要自己解析这些值

例如:

>>> import ast
>>> a_list = [1, 3, 5]
>>> with open('test.txt', 'w') as f:
...     f.write(repr(a_list))
... 
>>> with open('test.txt') as f:
...     read_list = ast.literal_eval(f.readlines()[0])
... 
>>> read_list
[1, 3, 5]

如果您的数据只是一个项目为基本类型(例如str、unicode、int、float)的列表,以及元素为等的列表或dict,那么您可以使用;这是跨语言移植的(这是你的问题吗?)

更新在问题编辑“我的pickle问题是我必须在代码的不同部分逐步添加列表”

你有没有考虑过收集清单,在你找到它们时进行腌制,然后在最后一次腌制所有的清单?json等也同样适用。您只需要一个容器来保存列表。你可以把它放在课堂上让它看起来更漂亮

class Preserver(object):
    def __init__(self):
        self._bottle = []
    def add(self, an_object):
        self._bottle.append(an_object)
    def preserve(self, filepath):
        # code using pickle or json to push self._bottle
        # out to a file named "filepath"

如果您的数据只是一个项目为基本类型(例如str、unicode、int、float)的列表,以及元素为等的列表或dict,那么您可以使用;这是跨语言移植的(这是你的问题吗?)

更新在问题编辑“我的pickle问题是我必须在代码的不同部分逐步添加列表”

你有没有考虑过收集清单,在你找到它们时进行腌制,然后在最后一次腌制所有的清单?json等也同样适用。您只需要一个容器来保存列表。你可以把它放在课堂上让它看起来更漂亮

class Preserver(object):
    def __init__(self):
        self._bottle = []
    def add(self, an_object):
        self._bottle.append(an_object)
    def preserve(self, filepath):
        # code using pickle or json to push self._bottle
        # out to a file named "filepath"

您应该尝试添加奖金,因为它确实是人类可读的文本文件。

您应该尝试添加奖金,因为它确实是人类可读的文本文件。

为什么不使用Pickle?这正是您想要做的。Python文档中的Pickle:如果您描述了为什么不想使用Pickle,这会有所帮助,因为它听起来非常适合您的目的。请尝试格式化您的问题,使其更具可读性,并包括一些您拥有的和您想要的示例。这样回答问题就容易多了。另外,请描述一下列表中的项目。为什么不使用Pickle呢?这正是您想要做的。Python文档中的Pickle:如果您描述了为什么不想使用Pickle,这会有所帮助,因为它听起来非常适合您的目的。请尝试格式化您的问题,使其更具可读性,并包括一些您拥有的和您想要的示例。这样回答问题就容易多了。另外,请描述一下列表中的项目。