【发布时间】:2014-09-22 13:54:16
【问题描述】:
我的代码当前生成一个仅包含浮点值的数组 (ra)。如果此数组中的值满足某个条件,我想将该特定值输出到文本文件。这是我有问题的代码部分:
outputFile = open('outFile.txt', 'wb')
i = 0
membersOuter = []
membersInner = []
membersCore = []
while i < (len(ra)):
DiffFinal = Diff[i] * 3600 * kpc_per_arcsec / 1000 #just converting values from an array called Diff
if DiffFinal < 2.0:
membersOuter.append(ra[i])
if DiffFinal < 1.0:
membersInner.append(ra[i])
if DiffFinal < 0.5:
membersCore.append(ra[i])
outputFile.write(ra[i] + ' ') #this is the part causing problems
i += 1
代码成功地为 3 个成员类别创建了数组。但是,我希望能够将满足最终条件的 ra 值(都是浮点数)输出到 outFile.txt。当我运行此代码时,我收到错误:
TypeError: 'float' does not support the buffer interface
我使用的是 Python 3.4,并且搜索过去的问题告诉我,这个过程自较低版本以来发生了变化。建议的一些更改包括:
outputFile.write(str(ra[i]))
TypeError: 'str' does not support the buffer interface
和
outputFile.write(bytes(ra[i]))
TypeError: 'float' object is not iterable
【问题讨论】:
-
str(ra[i]).encode('ascii')或bytes(str(ra[i]),'ascii')? -
就是这样 - 谢谢 vaultah!
-
有没有比输入
outputFile.write(str(ra[i]).encode('ascii') + ' \n'.encode('ascii'))更简单的方法来包含空格/换行符 -
如果是文本文件,为什么要用
wb打开? -
是的,如果将来有人正在阅读本文,请使用“w”,而不是“wb”。虽然 vaultah 的建议确实有效,但如果你使用 'wb'
标签: python python-3.x floating-point output