将基本变量列表写入文本文件

时间:2017-10-25 13:54:34

标签: python list file file-writing

我想写一个文本文件,其中包含以下格式的行:

result: variable1 +/- error1
result: variable2 +/- error2

等等......到目前为止,我有:

f = open('file_{a}.txt'.format(a=some_name), 'w')
for i in range(len(variable)):
    f.write('result: ', variable[i], '+/-', error[i], '\n')

变量和错误是浮点数,some_name是一个字符串。

但是我收到了一个错误:

  

TypeError:期望字符串或其他字符缓冲区对象

我想我需要以不同方式格式化f.write行,但我无法弄清楚如何。该文件只需要由人读取,因此实际格式可能会发生变化。

谢谢!

2 个答案:

答案 0 :(得分:4)

如果问题不是variable[i]error[i]的类型,请尝试以下操作:

f = open('file_{a}.txt'.format(a=some_name), 'w')
for i in range(len(variable)):
   f.write('result: {0} +/- {1}\n'.format(variable[i],error[i]))

答案 1 :(得分:0)

来自documentation

  

<强> f.write(string)

     

将字符串的内容写入文件,返回写入的字符数。

因此,您无法传递由strings分隔的任意数量commas作为arguments。这与print()的工作方式不同,除了任意数量的参数和formats它们之外......

这就是为什么你得到error

  

TypeError:期望字符串或其他字符缓冲区对象

如何修复:

修复它非常简单,如果您确定variable[i]error[i]strings,您可以:

format他们与.format

f.write('result: {} +/- {}\n'.format(variable[i], error[i]))

或将它们与+操作数连接起来:

f.write('result: ' + variable[i] + ' +/- ' + error[i] + '\n')

希望这有帮助!