2014-02-19 7 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')) 

, который дал мне TypeError: не все аргументы преобразуются во строки форматирования.

Может кто-нибудь, пожалуйста, помогите мне исправить эту проблему?

+0

Положите язык программирования в тэгах. Python? –

+0

Почему у вас есть «\ n» в параметрах на f.write – hwatkins

ответ

2

Просто добавьте \ п в конце

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')) 
Смежные вопросы