将变量写入文件,包括名称
假设我在一个小应用里有这样一个字典。
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()