2017-03-07 5 views
-1

異なるタイプと長さを持つ複数の変数を生成するPythonコードがあります。私はすべてをtxtに書きたいと思います。異なるタイプの複数の変数をテキストファイルに書き込む

保存したい変数はすべてdic変数dicvariableにあります。今、私はTXTを開きたい

dicvariable[0]['VarA'] # variable type int 
dicvariable[0]['VarB'] # variable type str 
dicvariable[0]['VarC'] # variable type bool 
dicvariable[0]['VarD'] # variable type NoneType 
dicvariable[0]['VarE'] # variable type list (size can be anything) 
dicvariable[0]['VarF'] # variable type dict (itself contains 5 more variables type ndarray) 

私が最初にすることはdicvariable:

VarA = dicvariable[0]['VarA'] # variable type int 
VarB = dicvariable[0]['VarB'] # variable type str 
VarC = dicvariable[0]['VarC'] # variable type bool 
VarD = dicvariable[0]['VarD'] # variable type NoneType 
VarE = dicvariable[0]['VarE'] # variable type list 
VarF1 = dicvariable[0]['VarF']['VarF1'] # variable type nparray (any size) 
VarF2 = dicvariable[0]['VarF']['VarF2'] # variable type nparray (any size) 
VarF3 = dicvariable[0]['VarF']['VarF3'] # variable type nparray (any size) 
VarF4 = dicvariable[0]['VarF']['VarF4'] # variable type nparray (any size) 
VarF5 = dicvariable[0]['VarF']['VarF5'] # variable type nparray (any size) 

から一つの変数の1を抽出することである: は私が保存しようとしている変数は、より正確にファイルを保存し、これらの変数をすべて保存してください。後で簡単にmatlabなどの他のプログラムでtxtを読み込むことができます。 元のdic変数にはnobs(つまりdicvariable[0], dicvariable[1], (...), divariable(nobs))のエントリがあるので、このプロセスを繰り返してnobs txtファイルを保存します。

EDIT:

f = open('file.txt', 'w') 
f.write(VarA + '\n') 
f.write(VarB + '\n') 
f.write(VarC + '\n') 
f.write(VarD + '\n') 
f.write(VarE + '\n') 
f.write(VarF1 + '\n') 
f.write(VarF2 + '\n') 
f.write(VarF3 + '\n') 
f.write(VarF4 + '\n') 
f.write(VarF5 + '\n') 
f.close() 
+0

を正確な問題は何ですか? – Julien

+0

申し訳ありませんが、私は動作していないものを追加しました。 私は実際にこれを行う方法についてちょっと調べましたが、まだそれを理解できませんでした。 – phdstudent

+1

エラーを表示してください。 'f.write(str(VarA)+ '\ n')' – Julien

答えて

-1

は棚上げモジュールを試してみてください:

は、ここで私は、エラーをもたらした試みたものだhttps://docs.python.org/2/library/shelve.htmlこれはバイナリファイルで辞書にすべての変数を保存します

、 IIRC。これは、プログラムの設定を保存するのに便利です。問題は、これらの変数は、テキストデータではないということです棚上げモジュール

+0

シェルフファイルを他のプログラミング言語にインポートすることはできません。 – TheBlackCat

0

で保存する変数:https://automatetheboringstuff.com/chapter8/ゴーセクションに:ここで

は簡単なイントロです。テキストファイルに書き込む前にそれらをテキストに変換する必要があります。これを行う通常の方法はstr(myvar)です。だから、f.write(str(VarF1) + '\n')することができます。あなたはそうのようなループでそれを行うことができます。これは、発電機使用して簡単にすることができ

with open('file.txt', 'w') as f: 
    for subdict in dictvariable: 
     for value in subdict.values(): 
      if not hasattr(value, 'values'): 
       f.write(str(value)+'\n') 
       continue 
      for subvalue in value.values(): 
       f.write(str(subvalue)+'\n') 

def getvars(data):    
    for subdata in data: 
     for value in subdata.values(): 
      if not hasattr(value, 'values'): 
       yield value 
       continue 
      for subvalue in value.values(): 
       yield subvalue 

with open('file.txt', 'w') as f: 
    f.writelines(str(value)+'\n' for value in getvars(dictvariable)) 
関連する問題