【发布时间】:2018-01-21 21:21:28
【问题描述】:
我正在使用 Python 3.5 64 位 Windows 操作系统。我正在尝试将浮点值写入文件。这是代码
with open('report.txt' , "ab") as f:
f.write(b"\n Result Pattern\n")
f.write('%f' %test_accuracy)
我也尝试过新的'{}'.format 说明符。但是我收到以下错误
f.write('%f' %test_accuracy)
TypeError: a bytes-like object is required, not 'str'
那么,当文件模式为二进制时,如何指定写入数字的格式。另一点是,如果我尝试在没有二进制选项的情况下编写,我会得到一个错误。
更新:
我知道用 python 编写基本文件以及何时使用b。我有这个 numpy 代码的 sn-p,我也在其中将数组写入文件。
np.savetxt(f , test_pat ,
header = 'A , B , C , D , E' ,
comments='' ,
delimiter = ',' ,
newline = '\r\n' ,
fmt = '%3d')
此时我收到上述错误,错误消息如下:
fh.write(asbytes(comments + header + newline))
TypeError: write() argument must be str, not bytes
然后当我将模式切换到ab 时,错误就消失了。
\r\n 在通过记事本打开时尝试很好地格式化时是否存在问题?
另一个更新:
类似的错误和答案建议使用binary 模式!
numpy savetxt append mode error
【问题讨论】:
-
f.write(b'%f' %test_accuracy)这个?你也需要b。 -
我不明白,你为什么要以二进制模式编写,而看起来你想要一个文本文件?
-
您需要确定您想要的文件类型。您目前似乎正在尝试混合文本和二进制文件。那是行不通的。选择一个并坚持下去。在这种情况下,正如@juanpa.arrivillaga 所说,它看起来甚至不需要二进制文件。
-
好吧,你知道什么!,这是我尝试的第一件事,但得到了“未知格式代码 b”错误,但在我的代码中某处我错过了添加“b”选项这搞砸了。感谢您闪电般的快速响应。我真的需要第三只眼睛来纠正我的错误。我的错误现在解决了。
-
@juanpa.arrivillaga:我确实尝试过不使用二进制选项,但我得到“write() 参数必须是 str,而不是字节”错误。奇怪,它应该发生。