我正在尝试创建一个程序,使第一行的文本文件为's16',然后它应该用数字填充下一行。我当前的代码看起来像这样:
import os
import numpy as np
file = open('workfile.txt','wb')
file.write('s16\n')
array=np.eye(4)
np.savetxt(file, array, fmt='%.3f', newline=os.linesep)
但这会在file.write('s16\n')
发出错误,因为我用'wb'打开文件,这意味着我正在尝试写字节,而's16 \ n'是一个字符串。但是如果我将'wb'更改为'w',那么np.savetxt(file, wut, fmt='%.3f', newline=os.linesep)
会因为没有处于'wb'模式而引发类似的错误。有没有办法调和这两个?谢谢!
答案 0 :(得分:0)
不是你问题的直接答案,但我希望它可能仍有帮助。
我已经停止使用numpy来编写和加载文件,而是使用pickle。 这个包比numpy更好地处理不同的数据类型和列表/数组。
示例代码片段:
import pickle
f = open("myfile.txt", 'w')
pickle.dump("My string", f)
还可以打开文件以进行只读或读取和写入。我强烈推荐这个包。
答案 1 :(得分:0)
尝试:
file.write(b's16\n')
在Python3中,默认字符串类型是unicode,因此您使用额外的b
来标记字节字符串。
savetxt
(以及load
对应方)使用字节字符串。所以你用'wb'打开文件是对的。
查看savetxt
文档 - 我认为您可以为其添加标题和预告行(可能仍需要b
- 除非savetxt
进行转换。)