我想写一个文本文件,其中包含以下格式的行:
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
行,但我无法弄清楚如何。该文件只需要由人读取,因此实际格式可能会发生变化。
谢谢!
答案 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')
希望这有帮助!