使用 python 读取二进制数据
Read in binary data with python
我是 Python 的新手,我正在尝试读入一个部分包含二进制数据的文件。 header 包含有关数据的一些信息,在 header 二进制数据之后。如果在文本编辑器中打开文件,它看起来像这样:
>>> Begin of header <<<
value1: 5
value2: 7
...
value65: 9
>>> End of header <<<
���ÄI›C¿���†¨¨v@���ÄW]c¿��� U⁄z@���@¬P\¿����∂:q@���@Ò˚U¿���†÷Us@���`ªw4¿��� :‘m@���@À›9@���ÄAs@���¿‹ ¿����ır@���¿@&%@���†„bq@����*˙-@��� [q@����ÚN8@����
Òo@���@√·T@���†‰zm@����9\@����ÃÜq@����€dZ@���`Ëäs@���†∏8I@���¿¬Ot@���†�6
另一个问题是我没有自己创建文件,如果这些是双精度或浮点数据,现在也不会。
那么我该如何解读这些数据呢?
首先,感谢大家的帮助:所以基本上问题出在 header。当我从文件中删除 header 时,我可以很好地读取数据。这可以用
来完成
x = numpy.fromfile(f, dtype = numpy.complex128 , count = -1)
很容易。问题是我找不到跳过行的函数 fromfile 的任何选项(可以跳过字节,但 header 大小可能因文件而异。
在这个很棒的帖子中,我找到了如何将二进制数组转换为 numpy 数组:
convert binary string to numpy array
有了这个,我可以通过读入数据文件的行来克服这个问题,然后将 header 行结束后的每一行合并到一个字符串中。
然后这个字符串完全按照我的要求变成了一个漂亮的数组。
我是 Python 的新手,我正在尝试读入一个部分包含二进制数据的文件。 header 包含有关数据的一些信息,在 header 二进制数据之后。如果在文本编辑器中打开文件,它看起来像这样:
>>> Begin of header <<<
value1: 5
value2: 7
...
value65: 9
>>> End of header <<<
���ÄI›C¿���†¨¨v@���ÄW]c¿��� U⁄z@���@¬P\¿����∂:q@���@Ò˚U¿���†÷Us@���`ªw4¿��� :‘m@���@À›9@���ÄAs@���¿‹ ¿����ır@���¿@&%@���†„bq@����*˙-@��� [q@����ÚN8@����
Òo@���@√·T@���†‰zm@����9\@����ÃÜq@����€dZ@���`Ëäs@���†∏8I@���¿¬Ot@���†�6
另一个问题是我没有自己创建文件,如果这些是双精度或浮点数据,现在也不会。
那么我该如何解读这些数据呢?
首先,感谢大家的帮助:所以基本上问题出在 header。当我从文件中删除 header 时,我可以很好地读取数据。这可以用
来完成x = numpy.fromfile(f, dtype = numpy.complex128 , count = -1)
很容易。问题是我找不到跳过行的函数 fromfile 的任何选项(可以跳过字节,但 header 大小可能因文件而异。
在这个很棒的帖子中,我找到了如何将二进制数组转换为 numpy 数组:
convert binary string to numpy array
有了这个,我可以通过读入数据文件的行来克服这个问题,然后将 header 行结束后的每一行合并到一个字符串中。 然后这个字符串完全按照我的要求变成了一个漂亮的数组。