写入文本文件

时间:2014-02-19 15:29:47

标签: python file-io typeerror

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:并非在字符串格式化过程中转换了所有参数

有人可以帮我解决这个问题吗?

4 个答案:

答案 0 :(得分:2)

只需在末尾添加\ n

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

答案 1 :(得分: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模块(带空格分隔符)来编写此文件。

答案 2 :(得分:1)

你忘了“%s”:

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

答案 3 :(得分: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\n" % (t, mydose[i], myerrs[i]*mydose[i]))