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

Orj*_*anp 25 python

假设我在一个小应用程序中有以下字典.

dict = {'one': 1, 'two': 2}
Run Code Online (Sandbox Code Playgroud)

如果我想将具有dict名称和所有内容的确切代码行写入文件,该怎么办?python中有一个函数可以让我这样做吗?或者我是否必须先将其转换为字符串?转换它不是问题,但也许有一种更简单的方法.

我不需要将它转换为字符串的方法,我可以做.但如果有一个内置函数可以为我做这个,我想知道.

为了说清楚,我想写的文件是:

write_to_file("dict = {'one': 1, 'two': 2}")
Run Code Online (Sandbox Code Playgroud)

Adr*_*son 56

repr函数将返回一个字符串,该字符串是您的dict的确切定义(除了元素的顺序,dicts在python中是无序的).不幸的是,我无法告诉自动获取表示变量名称的字符串.

>>> dict = {'one': 1, 'two': 2}
>>> repr(dict)
"{'two': 2, 'one': 1}"
Run Code Online (Sandbox Code Playgroud)

写入文件是非常标准的东西,就像任何其他文件写入:

f = open( 'file.py', 'w' )
f.write( 'dict = ' + repr(dict) + '\n' )
f.close()
Run Code Online (Sandbox Code Playgroud)

  • @bryan:我很抱歉,我错误地认为写入文件是非常明显的......奇怪的是,事实并非如此。 (2认同)

Joh*_*rra 22

使用 pickle

import pickle
dict = {'one': 1, 'two': 2}
file = open('dump.txt', 'w')
pickle.dump(dict, file)
file.close()
Run Code Online (Sandbox Code Playgroud)

并再次阅读

file = open('dump.txt', 'r')
dict = pickle.load(file)
Run Code Online (Sandbox Code Playgroud)

编辑:猜猜我误解了你的问题,对不起......但是泡菜可能会有所帮助.:)


Mik*_* D. 18

你正在寻找的是这样的东西吗?

def write_vars_to_file(_f, **vars):
    for (name, val) in vars.items():
        _f.write("%s = %s\n" % (name, repr(val)))
Run Code Online (Sandbox Code Playgroud)

用法:

>>> import sys
>>> write_vars_to_file(sys.stdout, dict={'one': 1, 'two': 2})
dict = {'two': 2, 'one': 1}
Run Code Online (Sandbox Code Playgroud)