2016-04-28 9 views
3

辞書をファイルに出力する方法が変数として定義されているのとまったく同じかどうか疑問に思っていますか?辞書を変数に正確に定義されたファイルに出力する

dict1 = {01: 'val1', 02: 'val2', 03: 'val3'} 

ファイルの内容が同じになります。

だからコード内では次のようになりますか?

だから、ファイルが含まれています

dict1 = {01: 'val1', 02: 'val2', 03: 'val3'} 

私はpickleとJSONを聞いたが、私は理想的すなわち

from some_module import some_dict 

が可能これは、モジュールからインポートできるようにしたいですか?

+0

なぜあなたは輸入品を怖がっていますか? – e4c5

+0

怖いの輸入?詳しく教えて? – JONAS402

答えて

4

は、単にあなたが再作成可能性があるとの結果の文字列が有効なリテラルであることをそのように文字列にオブジェクトを変換し、内蔵repr(...)関数を使用しますオブジェクト。

それは、少なくとも最も一般的な基本データ型の有効なリテラルを生成し、その引数の__repr__()メソッドを呼び出します。これは、しかし、他のほとんどのオブジェクトでは動作しません:

dict1 = {1: 'val1', 2: 'val2', 3: 'val3'} 
literal = repr(dict1) 

print(literal) 
# Output: {1: 'val1', 2: 'val2', 3: 'val3'} 

は今、あなたはPythonのファイルにそれを保存することができます:

with open("my_dict.py", "w") as f: 
    print("dict2 = " + literal, file=f) 

そして、これは今、同じフォルダ内の他のPythonスクリプトからのモジュールとしてインポートできます。

import my_dict 
print(my_dict.dict2[2]) 
# Output: val2 

それともfromを使用して、それをインポートし、モジュール名を毎回使用しない場合:

from my_dict import dict2 
print(dict2[2]) 
# Output: val2 
+1

パーフェクト! @ByteCommanderはいつものように有益で有益なものだったのです! – JONAS402

+0

ありがとう、答えを受け入れることを忘れないでください。 :) –

0

私はそれが可能ではないと思います。インポートは、ファイルではなくモジュールのインポートに使用されます。これを行うには、ファイルを読み込んで処理する必要があります。あなたは、例えばと、ファイルに辞書を書き込むことができます。

output = "dict1 = "+str(dict1) 
f.write(output) 
+0

私はリストでこれをやったことがありますか? – JONAS402

+0

はい、それはあなたがファイルに書き込むときにはそれ以上のdictではありません。これはdictの文字列表現です。そして、ファイルに文字列を書くことができるので、可能です。 –

0

あなたはあなたのモジュールの現在の状態の上に辞書を示しglobals()機能を使用して名前の目的を達成することができます。しかし、これは良いシナリオではありません、あなたはJSONによってあなたのデータのシリアル化を使用する必要があります。

関連する問題