如何獲得Python 源代碼內存中的Python字典的表示?如何將Python內存字典作爲Python源代碼保存到文件中?
我決定讀托馬斯Kluyver的comment上搶Galanakis'題爲Why bother with python and config files?在他的評論的博客文章後問這個問題托馬斯指出
但是,如果你想要的任何方式改變應用 內設置(如首選項對話框),沒有好的方法來自動編寫一個正確的Python文件 。
如何獲得Python 源代碼內存中的Python字典的表示?如何將Python內存字典作爲Python源代碼保存到文件中?
我決定讀托馬斯Kluyver的comment上搶Galanakis'題爲Why bother with python and config files?在他的評論的博客文章後問這個問題托馬斯指出
但是,如果你想要的任何方式改變應用 內設置(如首選項對話框),沒有好的方法來自動編寫一個正確的Python文件 。
假設它僅使用「基本」的Python類型,你可以寫出來的結構repr()
,然後用ast.literal_eval()
讀回在後。
不能保證'repr'會產生正確的Python源代碼,對吧? – 2012-07-21 17:35:09
不會。如果只有基本類型(字符串,字典,列表,整數等),但不是,例如,如果您定義了自己的類並嘗試保存其實例,則不會。 – 2012-07-21 17:39:37
如果內容僅由基本類型組成,則會生效。 – 2012-07-21 17:39:47
正如文章說,你最好使用JSON/YAML或其他格式,但如果你認真想用Python字典和只使用基本的Python類型...
寫出(嘗試使用pformat,試圖使其更可讀):
from pprint import pformat # instead of using repr()
d = dict(enumerate('abcdefghijklmnopqrstuvwxyz'))
open('somefile.py').write(pformat(d))
回讀:
from ast import literal_eval
d = literal_eval(open('somefile.py').read())
_正如文章所述,您最好使用JSON/YAML或其他格式_並非如此,文章完全相反:) – 2012-07-21 17:47:43
你的意思是在文件中使用'.py'文件'a_dict = {'key1':'value1'}'在裏面,或者是低級別的文件? – TankorSmash 2012-07-21 17:27:08
我認爲Kluyver只是意味着沒有什麼內置於Python來完成它,而不是它無法完成(也不是很難)。 – martineau 2012-07-21 17:32:08
@martineau伊格納西奧的回答如何? – 2012-07-21 17:32:48