2014-02-19 113 views
0
f = open("outputdata.txt", 'w') 
    for i in range(len(mydose)): 
     t = (mygrid[i]+mygrid[i+1])/2.0 
     f.write("%12.6f %12g %12g" % (t, mydose[i], myerrs[i]*mydose[i])) 

上面的代碼給我outputdata.txt文件與一行的所有數據。現在,我想寫在3列,它們是t,mydose [i]和* myerrs [i] mydose [i]。我想:寫入文本文件

f = open("outputdata.txt", 'w') 
    for i in range(len(mydose)): 
     t = (mygrid[i]+mygrid[i+1])/2.0 
     f.write("%12.6f %12g %12g" % (t, mydose[i], myerrs[i]*mydose[i],'\n')) 

這給了我類型錯誤:在未格式化字符串轉換所有參數。

有人能幫我解決這個問題嗎?

+0

放入標籤的編程語言。蟒蛇? –

+0

爲什麼在f.write的參數中有'\ n' – hwatkins

回答

2

就在末尾添加\ n

f.write("%12.6f %12g %12g\n" % (t, mydose[i], myerrs[i]*mydose[i])) 
0

UES代碼爲打擊:

f = open("outputdata.txt", 'w') 
for i in range(len(mydose)): 
    t = (mygrid[i]+mygrid[i+1])/2.0 
    f.write("%12.6f %12g %12g\n" % (t, mydose[i], myerrs[i]*mydose[i])) 
1

這應該可以解決你的問題:

with open("outputdata.txt", 'w') as f: 
    for (i, (err, dose)) in enumerate(zip(myerrs, mydose)): 
     t = (mygrid[i] + mygrid[i + 1])/2. 
     f.write("%12.6f %12g %12g\n" % (t, dose, err * dose)) 

將來你可以考慮使用csv模塊(用空格分隔符)來寫這個文件。

1

你忘了 「%S」:

f.write("%12.6f %12g %12g %s" % (t, mydose[i], myerrs[i]*mydose[i],'\n'))