使用numpy savetxt将字符串写入文本文件,然后写入数组

时间:2016-02-11 00:38:24

标签: arrays string python-3.x numpy

我正在尝试创建一个程序,使第一行的文本文件为'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'模式而引发类似的错误。有没有办法调和这两个?谢谢!

2 个答案:

答案 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进行转换。)