2017-03-07 156 views
-1

我有一個Python代碼可以生成具有不同類型和長度的多個變量。我想寫一切到一個TXT。將不同類型的多個變量寫入文本文件

我想保存的所有變量都在dic變量dicvariable內。 更確切地說我想保存的變量是:

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) 

提取由一個變量一個現在我想開一個txt文件,並保存所有這些變量,最好以某種方式,我可以稍後在其他程序(如matlab)中輕鬆加載txt。 也是原來的詞義變量有nobs條目(即dicvariable[0], dicvariable[1], (...), divariable(nobs)),所以我想重複這個過程並保存nobs txt文件。

編輯:

這裏就是我想這產生了一個錯誤:

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

回答

0

的問題是,這些變量不文本數據。在將它們寫入文本文件之前,您需要將它們轉換爲文本。正常的做法是用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)) 
相關問題