将变量写入文件,包括名称

44 投票
8 回答
319195 浏览
提问于 2025-04-15 16:59

假设我在一个小应用里有这样一个字典。

dict = {'one': 1, 'two': 2}

如果我想把这行代码,连同字典的名字一起,写入一个文件,有没有什么函数可以在Python里做到这一点?还是说我必须先把它转换成字符串?转换成字符串对我来说没问题,但也许有更简单的方法。

我不需要转换成字符串的方法,我自己可以做到。但如果有内置的函数可以帮我完成这个任务,我想知道。

为了让事情更清楚,我想写入文件的内容是:

write_to_file("dict = {'one': 1, 'two': 2}")

8 个回答

21

你是在找这样的东西吗?

def write_vars_to_file(f, **vars):
    for name, val in vars.items():
        f.write("%s = %s\n" % (name, repr(val)))

用法:

>>> import sys
>>> write_vars_to_file(sys.stdout, dict={'one': 1, 'two': 2})
dict = {'two': 2, 'one': 1}
33

你可以使用 pickle 这个工具。

import pickle
data = {'one': 1, 'two': 2}
file = open('dump.txt', 'wb')
pickle.dump(data, file)
file.close()

然后再把它读回来。

file = open('dump.txt', 'rb')
data = pickle.load(file)

编辑:我想我误解了你的问题,抱歉……不过 pickle 可能还是能帮上忙。:)

90

repr 函数会返回一个字符串,这个字符串就是你字典的确切定义(不过要注意,字典里的元素顺序是不固定的,因为在 Python 中字典是无序的)。很遗憾,我不知道有什么方法可以自动获取一个表示变量名称的字符串。

>>> dict = {'one': 1, 'two': 2}
>>> repr(dict)
"{'two': 2, 'one': 1}"

写入文件的过程是很常见的,就像其他任何文件写入操作一样:

f = open( 'file.py', 'w' )
f.write( 'dict = ' + repr(dict) + '\n' )
f.close()

撰写回答