精华内容
下载资源
问答
  • 我发现用Python读取二进制文件特别困难。你能帮我一把吗?我需要读取这个文件,在Fortran 90中,该文件很容易被int*4 n_particles, n_groupsreal*4 group_id(n_particles)read (*) n_particles, n_groupsread (*) ...

    我发现用Python读取二进制文件特别困难。你能帮我一把吗?我需要读取这个文件,在Fortran 90中,该文件很容易被int*4 n_particles, n_groups

    real*4 group_id(n_particles)

    read (*) n_particles, n_groups

    read (*) (group_id(j),j=1,n_particles)

    详细地说,文件格式是:Bytes 1-4 -- The integer 8.

    Bytes 5-8 -- The number of particles, N.

    Bytes 9-12 -- The number of groups.

    Bytes 13-16 -- The integer 8.

    Bytes 17-20 -- The integer 4*N.

    Next many bytes -- The group ID numbers for all the particles.

    Last 4 bytes -- The integer 4*N.

    我如何用Python来读这个?我什么都试过了,但都没成功。有没有可能在python中使用F90程序,读取这个二进制文件,然后保存我需要使用的数据?

    展开全文
  • python读取二进制流 Python二进制方式读写文件发布时间:2017-03-18来源:服务器之家这两天用Python解析ELF二进制文件,遇到了不少问题,总结整理如下,以便加深对Python的理解。以二进制读取文件,也就是’rb’格式...

    python读取二进制流 Python二进制方式读写文件

    发布时间:2017-03-18

    来源:服务器之家

    这两天用Python解析ELF二进制文件,遇到了不少问题,总结整理如下,以便加深对Python的理解。

    以二进制读取文件,也就是’rb’格式读取,这个到底如何理解。

    其实很简单,以’r’也就是文本读取时,比如读取一个文本文件,其中有个字符串:12345678。以’r’格式读取,那得到的就是串‘12345678’,你可以直接对这个字符串进行操作,这个方式是以用户友好的字符方式显示,你可以对其进行串连接,切片操作。

    如果以‘rb’格式读取,那得到的是也是个串,只是这个串中存储的是各个字符的ASCII值。也就是说,存储的是\x31\x32\x33\x34\x35\x36\x37\x38,注意:这里是串中是没有\x的,\x只是表示这个数据是16进制。另外,也不要将31理解成3和1两个字符了,31是0x31是个整体,是一个字符,表示字符1。从这个角度来说,你可以认为它是HEX值流。因为这个串中都是16进制数,所以你要将它当成数来看,用数的操作符号去解析它。比如,将这个串赋值给strHex=’\x31\x32\x33\x34\x35\x36\x37\x38’,len(strHex)=8,注意,不是等于16,原因是显然的,\x31表示一个字符。strHex[0:1]得到的是\x31数字。ord(strHex[0:1])这样是可以的,虽然,strHex[0:1]是个数字,但是从字符的角度来说,它又是字符1,所以ord(strHex[0:1])相当于ord(‘1’),从这个角度可看出,字符和Hex值两个角度互补考虑,对理解二进制还是很有帮助的。

    另外,还发现Python还提供了两个类:memoryview和bytearray。Memoryview是只读的,它允许Python代码访问内部对象的内部数据,所以显然要只读了。只是这个对象要支持buffer protocol(不知道是什么东西)。Memoryview有个元素的概念,这个元素是原子性的,由对象来操作。简单的类型如str和bytearray,其元素就是一个字节。但是第三方类型可能元素会大些。所以,可以看出,memoryview其实就是就像str一样,以元素为单位将同类元素组合在一起。只是memoryview可以以对象为参数,比如v=memoryview(‘abcdefg’),这个和字符串没什么区别,但是如果v=memoryview(obj),obj是个对象,那么就得到了对象的内存了。

    Memoryview也支持切片操作,返回str类型。

    所以,‘r’和‘rb’的区别在于,一个得到的是对用户友好的字符,一个得到的对程序友好的字符的Hex值,在写程序时,要从Hex值和字符两个角度共同思考。

    f=open('test.bin','wb')

    f.truncate()

    s='\x22\x32\xdd\xfd\xab'

    data=bytearray('gggggggg')

    data[1:4]='\xAA\xBB\xCC'

    print len(data)

    b='a'

    a=memoryview(b)

    print a.readonly

    v=memoryview('abcdefg')

    f.write(s)

    f.write(data)

    f.close()

    展开全文
  • 主要介绍了Python读取二进制文件代码方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 今天小编就为大家分享一篇使用Python读取二进制文件的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python读取二进制文件

    2020-12-07 08:58:38
    import numpy as np import cv2 with open("result.bin", 'rb') as f: input_array = np.fromfile(f, dtype=np.uint8)
    import numpy as np
    import cv2
    with open("result.bin", 'rb') as f:
        input_array = np.fromfile(f, dtype=np.uint8)
    
    展开全文
  • 使用Python读取二进制文件

    万次阅读 多人点赞 2018-03-13 09:00:25
    目标:目标文件为一个float32型存储的二进制文件,按列优先方式存储。本文使用Python读取该二进制文件并... 读取二进制文件 首先使用open函数打开文件,打开模式选择二进制读取"rb"。f = open(filename, ...

        目标:目标文件为一个float32型存储的二进制文件,按列优先方式存储。本文使用Python读取该二进制文件并使用matplotlib.pyplot相关工具画出图像

        工具:Python3, matplotlib,os,struct,numpy

        1. 读取二进制文件

            首先使用open函数打开文件,打开模式选择二进制读取"rb"。

    f = open(filename, "rb")

            第二步,需要打开按照行列读取文件,由于是纯二进制文件,内部不含邮任何的数据结构信息,因此我们需要给定二进制数据的行数列数(nx和ny)来确定图像的形状。这里我们的数据类型是float32型的,对应过来是4bytes,使用for循环逐个read4个字节。

    for i in range(nx):
        for j in range(ny):
            data = f.read(4)

            得到的结果如下:

    b'5\x9d\x82\xc3'
    b'\xb1\x04\x10\xc4'
    b'\xc1\x9eD\xc4'
    b'a\x86R\xc4'
    b'\x15\x01=\xc4'

            可以看到,读入的数据为十六进制数,这个时候的数据并不能直接用来画图,需要转换为float32型。这里使用struct.unpack来转译

    data_float = struct.unpack("f", data)[0]

            就可以得到正确的结果了

    -261.2281799316406
    -576.0733032226562
    -786.4805297851562
    -842.0996704101562
    -756.0169067382812

            建立一个numpy数组,将读入的数据分别按列优先的方式放入数组,就完成了图像读入的操作。

    将上述操作包装成函数,代码如下:

    def xshow(filename, nx, nz):
        f = open(filename, "rb")
        pic = np.zeros((nx, nz))
        for i in range(nx):
            for j in range(nz):
                data = f.read(4)
                elem = struct.unpack("f", data)[0]
                pic[i][j] = elem
        f.close()
        return pic

        2. 画出图像

            这里我们的目的是将矩阵输出灰度图,并保存为tiff格式的图像,效果图如下(该图为使用弹性波波动方程在Marmousi模型下的波场快照):


            不需要坐标轴的信息,直接使用imsave命令,使用cmap选定颜色格式即可。

    plt.imsave('output.tiff', img, format='tiff', cmap=plt.cm.gray)

      如果使用PIL库读取图像,可能会得到不同的效果,可能需要做直方图均衡,目前还没有找到原因。

        


    展开全文
  • python 读取二进制文件

    万次阅读 2018-03-09 17:54:02
    二进制文件使用 read( size) with open ( 'lgtm-monitor.dat' , 'rb' ) as fp: data = fp. read ( 2 ) #type(data) === bytes text = int.from_bytes(data, byteorder= 'big' ) fp. close ()
  • python读取二进制文件中的浮点数数组
  • Python二进制文件读取并转换 ...由于某些原因,需要用python读取二进制文件,这里主要用到struct包,而这个包里面的方法主要是unpack、pack、calcsize。详细介绍可以看:Python Struct 官方文档。这里主要讨论,p...
  • Python读取二进制文件代码方法解析 问题: 有二进制文件中保存了 20 亿个 2 Bytes 的数,需将其读出,每 20000 个数作图,拟合后输出结果。 # -*- coding: utf-8 -*- """ @author: kurrrr """ import struct def ...
  • 我们要从二进制文件读取数据要用到python的struct包,首先我们要告诉他我们数据格式是怎么样的 char szID[50]; --------50s (s代表char[]类型, 50s代表char[50]) int nType; --------i (int类型) char ...
  • 读取二进制文件编码是一个比较麻烦的事情 我们在decode二进制文件时,是需要知道编码格式的,除了常见的utf-8,还有UCS-2-Little Endian(utf-16-le)和UTF-8-BOM(utf-8-sig) 如下是UCS-2-Little Endian的二进制文件...
  • import os def Main(): sfilename = r'C:\Users\1111.png' f = open(sfilename,"rb") hex_list = ("{:02x}".format(int(c)) for c in f.read()) buflist = list(hex_list) i = 0 linesize = 16 ...
  • 示例: #!/usr/bin/envpython #encoding:utf-8 importbinascii fh=open(r'C:\Temp\img\2012517165556.png','rb') a=fh.read() #print'raw:',`a`,type(a) hexstr=binascii.b2a...
  • 多的不解释了直接上代码 #!/usr/bin/python ...# dec,=struct.unpack('B',binChar) 二进制字节数据转为十进制 # bin(dec) 十进制转为二进制 # hex(dec) 十进制转为16进制 # int('0x10', hexData) 16进制转十进制
  • 读取二进制文件时,python报编码错误,如下: positive_examples = list( open(positive_data_file, "rb", encoding="utf-8").readlines() ) Traceback (most recent call last): File "<stdin>", line 1,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,580
精华内容 33,432
关键字:

python读取二进制文件

python 订阅