如何在.py文件中保存列表?

时间:2017-06-06 16:46:04

标签: python list python-3.x

我正在读取普通文本文件的内容,然后尝试将其作为列表变量保存在.py文件中。

最初我尝试的是读取文件的内容然后将它们存储在列表中。然后我自己把它们写成.py文件。

>>> f = open("word.txt","r+")
>>> string = f.read()
>>> string = (string.split("\n")) #checkpoint
>>> string = "\',\' ".join(string)
>>> len(string)
147636
>>> f.close()
>>> f = open("word.py","w")
>>> f.write("word = [\'")
>>> f.write(string)
>>> f.write("\']")
>>> f.close()

然而,当我尝试使用import word时 我收到以下错误

  

SyntaxError:扫描三引号字符串文字时的EOF

有没有办法可以将列表字符串保存在.py文件中显示的检查点?

2 个答案:

答案 0 :(得分:2)

pprint.pprint可能有所帮助。 pprint()使用repr()来处理任何字符串转义要求(例如,字符串中间嵌入了一个'。)它还需要stream=个参数将输出重定向到文件。

您也可以使用repr(string)代替pprint(string)。我选择pprint()将结果拆分为多行。

还请注意with open(...) as ...:的使用。退出缩进块时会自动关闭文件。

from pprint import pprint

with open('word.txt') as f:
    string = f.read().split('\n')
with open('word.py', 'w') as f:
    f.write('word = ')
    pprint(string, stream=f)

答案 1 :(得分:1)

当前的问题是您在 Python模块的文件上使用了import。您不能将列表值写为文本,只需通过简单的输入操作将其重新作为列表值。

当你import你的价值时,Python会尝试将其解析为代码文件。您编写的文件中的某个位置是三引号(开头),没有结束三重引号。 Python命中文件末尾,终于意识到字符串没有结束。这就是它生气的地方:你骗了Python。你告诉它这将是一个法律模块,并给它一些甚至不合法的令牌。 : - )

您需要找到一种可行的方式来传输该列表值。我无法在此提出任何建议,因为您还没有描述更高级别的问题。