我想写一个文本文件,其中包含以下格式的一些行:
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
线,但我无法弄清楚如何。该文件只需要由人读取,因此实际格式可以更改。
谢谢!
如果问题不是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]))
documentation
:
f.write(string)
将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')
希望这可以帮助!