【问题标题】:Writing list of basic variables to text file将基本变量列表写入文本文件
【发布时间】:2017-10-25 13:54:33
【问题描述】:

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

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] 可能是数字而不是字符串(这是write 期望您提供的。试试f.write('result: ', str(variable[i]), '+/-', str(error[i]), '\n')
  • 您能否提供有关变量variableerrorsome_name 的更多信息?似乎您没有提供字符串。
  • 举个例子说明variableerror是什么

标签: python list file file-writing


【解决方案1】:

如果问题不是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]))

【讨论】:

  • 是的,解决了它,使用这种格式更整洁
【解决方案2】:

来自documentation

f.write(string)

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

因此,您不能将任何数量的stringscommas 分隔为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')

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2017-09-27
    • 2013-09-19
    • 2017-11-06
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多