写入文本fi

2024-10-01 13:36:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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]))

前面的代码给了我输出数据.txt一行中包含所有数据的文件。现在,我想写三列,分别是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'))

这给了我类型错误:不是所有的参数都在字符串格式化过程中转换。你知道吗

有人能帮我解决这个问题吗?你知道吗


Tags: 文件数据代码intxt类型forlen
3条回答

您忘记了“%s”:

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

只需在末尾添加\n

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

这将解决您的问题:

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模块(带有空格分隔符)来编写这个文件。你知道吗

相关问题 更多 >