如何将列表写入文本文件与python中显示的完全相同?

时间:2014-12-05 18:02:27

标签: python

我希望能够将列表写入文本文件,就像我只是在控制台中打印出来一样(带括号和所有内容)。原因是,我需要稍后使用该列表,它必须像打印时那样正常显示。

我尝试过使用csv模块,但我无法按照自己的意愿对其进行格式化。

有什么建议吗?

5 个答案:

答案 0 :(得分:2)

尝试使用repr。 repr“返回对象的规范字符串表示形式”,因此它应该为您提供在交互式提示符上检查内容时打印的相同字符串。

file.write(repr(my_list))

答案 1 :(得分:1)

如果您正在寻找更通用的解决方案,您可能想要使用json:

import json
my_list = ['hello','world']
print json.dumps(my_list, indent=4, sort_keys=True, separators=(',', ': '))

输出是:

[
    "hello",
    "world"
]

它不仅仅是列表有用:

my_dict = {
    'hello':1,
    'world':2
}
my_dict['my_list'] = my_list
print json.dumps(my_dict, indent=4, sort_keys=True, separators=(',', ': '))

输出是:

{
    "hello": 1,
    "my_list": [
        "hello",
        "world"
    ],
    "world": 2
}

好的部分是你可以使用“json.loads”将字符串更改回原始值。下面是一个示例,您可以将字符串保存到文件中,稍后再读取它以重新创建字典:

with open(r'c:\my_dict.json', 'w') as f:
    f.write(json.dumps(my_dict, indent=4, sort_keys=True, separators=(',', ': ')))
with open(r'c:\my_dict.json', 'r') as f:
    data = f.read()
    my_loaded_dict = json.loads(data)
print my_loaded_dict['my_list']
print my_loaded_dict.keys()

输出是(注意字符串现在是unicode):

[u'hello', u'world']
[u'world', u'my_list', u'hello']

答案 2 :(得分:0)

您可以创建一个小帮助函数来创建列表的字符串表示

def listify(l):
    return '[{}]'.format(', '.join(map(str,l)))

>>> l = [1,2,3,4,5]
>>> listify(l)
'[1, 2, 3, 4, 5]'

答案 3 :(得分:0)

write之前使用str:

>>> a = [1,2,3,4]
>>> b = str(a)
>>> b
'[1, 2, 3, 4]'
>>> file_descriptor.write(b)

答案 4 :(得分:0)

您可以使用str方法换行字符串

In [21]: l = [1,2,3]

In [22]: with open("file_test", 'a') as f:
   ....:     f.write(str(l) + "\n")
   ....:     

In [23]: