TypeError:Python文件中无法理解的数据类型

时间:2015-07-17 11:45:05

标签: python python-2.7 numpy

我正在尝试使用以下命令读取二进制文件:

import numpy as np
fid = open(filename, 'rb')
ax = np.fromfile(fid, dtype=np.int32, count=1)

此命令工作正常,但

ay = np.fromfile(fid, dtype=np.char, count=16)

给出了一个TypeError:数据类型不被理解。知道如何将其作为字符类型阅读?

3 个答案:

答案 0 :(得分:2)

您所需的数据类型不存在,np.char实际上是a module

看看numpy datatypes,您可以使用np.byte来覆盖您的字节表示,这是np.int8

答案 1 :(得分:1)

你应该使用

ay = np.fromfile(fid, dtype=np.char, count=16)

而不是

numpy

因为char不包含标量类型numpy。有关numpy.byte数据类型的更多信息,请参阅hereC char类型对应int类型 如果要将16位二进制数字的数组转换为一个aybin = np.fromfile(fid, dtype=np.char, count=16) ay = int(("".join(str(d) for d in aybin)), 2) ,可以使用以下代码:

{
"content-length"=>["0"],
"server"=>["Microsoft-IIS/8.0"],
"request-id"=>["183391ab-9f6b-4828-b8bc-3fd47f7c5d9f"],
"set-cookie"=>["ClientId=VMHPFWYG0GTCMMSGARF0A; expires=Sat, 16-Jul-2016 11:50:14 GMT; path=/; secure; HttpOnly"],
"x-calculatedbetarget"=>["BN1PR04MB469.namprd04.prod.outlook.com"],
"x-backendhttpstatus"=>["404"],
"x-diaginfo"=>["BN1PR04MB469"],
"x-beserver"=>["BN1PR04MB469"],
"x-powered-by"=>["ASP.NET"],
"x-feserver"=>["BLUPR16CA0002"],
"date"=>["Fri, 17 Jul 2015 11:50:15 GMT"]
}

答案 2 :(得分:0)

所以,在我通过评论看到你的沟通后,我更新了我的答案如下:

在您的情况下,您应该使用:

ay = np.fromfile(fid, dtype=np.byte, count=16)

但是,我在此处留下我之前回答的部分内容,以考虑在其他特定情况下使用。

尝试numpy.loadtxt()

从文本文件加载数据的更灵活方式。

但是如果你甚至使用numpy.fromfile(),那么你必须使用arg sep,因为空(“”)分隔符意味着该文件应该被视为二进制

正如您可以在numpy手册中阅读here

sep:str

如果文件是文本文件,则在项目之间分隔。空(“”)分隔符表示该文件应被视为二进制文件。分隔符中的空格(“”)匹配零个或多个空白字符。仅由空格组成的分隔符必须至少匹配一个空格。