附加到python中的.data文件

问题描述 投票:0回答:1

类似于Meenakshi我正在尝试使用numpy的savetxt函数将数据追加到文件中。

我有一个.data文件,我想向其附加更多float32数据。

responses = np.array(responses,np.float32)
responses = responses.reshape((responses.size,1))

# save as new training results
np.savetxt(sampleData,samples)
np.savetxt(responseData,responses)

# want the option to append to previously written results 

我可以将以下内容附加为二进制文件,但需要在float32中附加。

# append to old training results 
    with open(sampleData, 'ab+') as fs:
        fs.write(samples)
    with open(responseData, 'ab+') as fr:
        fr.write(responses)

当我尝试

# append to old training results 
        with open(sampleData, 'a+') as fs:
            fs.write(samples)
        with open(responseData, 'a+') as fr:
            fr.write(responses)

我得到“ TypeError:write()参数必须是str,而不是numpy.ndarray”

鉴于以上所述,在python中与该.data文件类型进行交互时应使用的语法/扩展名是什么?

python file types append file-extension
1个回答
0
投票

您的评论提示正在发生的事情:

以下内容会追加,但是会输入乱码(我假设是因为二进制,但是如果没有b,它将告诉我我需要输入一个字符串)->使用open(sampleData,'ab +')作为fs:fs.write (样本),其open(responseData,'ab +')为fr:fr.write(responses)

[当您尝试不使用b进行写时,它会抱怨,因为您需要在正常写模式下给它一个字符串-您不能只写一个列表/数组(即[C0 ]和samples是)。当您使用responses时,您是以二进制/字节模式编写的,因此,传递给b的所有内容都会被强制转换为字节。如果以二进制模式编写以下内容,这就是我看到的内容:

write

与在我创建的数组上调用resp = np.array([1, 2, 4, 5], np.float32) resp = resp.reshape((resp.size, 1)) np.savetxt(file1, resp) with open(file2, 'ab+') as fo: fo.write(resp) # From Hex view of written file 00 00 80 3F 00 00 00 40 00 00 80 40 00 00 A0 40 相同:

bytes(...)

因此,您只需要将数据格式化为import binascii binascii.hexlify(bytes(resp)) # produces: b'0000803f00000040000080400000a040' -> '00 00 80 3f 00 00 00 40 00 00 80 40 00 00 a0 40' 友好的表示形式,例如加入字符串(例如):

str

...但是,格式化的方式当然取决于您的要求。

© www.soinside.com 2019 - 2024. All rights reserved.