Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—读入先前的';列表';来自文件的变量_Python_String_File_List - Fatal编程技术网

Python—读入先前的';列表';来自文件的变量

Python—读入先前的';列表';来自文件的变量,python,string,file,list,Python,String,File,List,我之前创建了一个列表,并将其保存到文件“mylist.txt”中。然而,当我在中读取它时,它是一个字符串,这意味着我不能像我喜欢的那样访问每个元素。我一直在努力寻找解决这个问题的方法,但没有任何效果 在文本文档中,列表是一行,看起来像: [(['000', '001', '002'], ('010', '011', '012')), (['100', '101', '102'], ('110', '111', '112'))] 所以如果这个列表等于mylist,我就可以 >>>

我之前创建了一个
列表
,并将其保存到文件“mylist.txt”中。然而,当我在中读取它时,它是一个字符串,这意味着我不能像我喜欢的那样访问每个元素。我一直在努力寻找解决这个问题的方法,但没有任何效果

在文本文档中,列表是一行,看起来像:

[(['000', '001', '002'], ('010', '011', '012')), (['100', '101', '102'], ('110', '111', '112'))]
所以如果这个列表等于mylist,我就可以

>>> print mylist[0]
(['000', '001', '002'], ('010', '011', '012'))
>>> print mylist[0][0]
['000', '001', '002']
>>> print mylist[0][0][2]
002
等等

以上内容对我很有用,但在列表中阅读会产生以下效果:

>>>myreadlist=open("mylist.txt",'r').read()
>>>myreadlist
"[(['000', '001', '002'], ('010', '011', '012')), (['100', '101', '102'], ('110', '111', '112'))]"
>>>myreadlist[0]
'['
>>>print myreadlist[0]
[
>>>myreadlist[:15]
"[(['000', '001'"
等等。 我知道
mylist
的格式不好,但它能满足我的需要,而且生成它花了很长时间。我尝试过将列表复制粘贴到python中,就像
mylist=
,但是列表太长了,我得到了一个内存错误

是否有办法读取文件并将其用作
列表
,以便我可以像正常情况一样访问每个元素(如上面的第一个打印语句所示)

非常感谢

将字符串传递给。它将安全地将字符串解析为适当的结构:

>>> import ast
>>> with open("file.txt", 'r') as f:
        data = ast.literal_eval(f.read())
>>> # You're done!

你的应用程序中是否必须是纯文本文件?假设已将其正确格式化为Python列表,则可以将其转换为Python代码而不是文本。重命名文件
mylist.py
,并在列表前面添加一个赋值,如
mylist=[xxx]

在需要访问此列表的Python脚本中,您可以像从.mylist导入mylist那样导入它,这将允许您执行您的工作(例如,
mylist[0]
等)


上面的导入假定
mylist.py
和Python脚本位于同一个模块中(同一个目录中有
\uuuu init\uuuu.py
文件)。如果您不清楚(请查看),只需将整个列表复制到与脚本相同的文件中,并将赋值放在同一文件的顶部即可。

这非常有效!非常感谢,这让我很头疼。考虑这个“解决”!谢谢你的评论和信息。它不必是.txt文件,但是我发现@icktoofay的响应最有用,并且将在这个特定实例中使用该方法。