iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >5.7:Python如何读取二进制文件?
  • 537
分享到

5.7:Python如何读取二进制文件?

javalinux开发语言 2023-09-01 18:09:53 537人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

随着信息技术的不断发展,二进制数据已经成为了现代计算机应用中不可或缺的一部分。在许多情况下,我们需要读取和处理二进制数据,这些数据可能包括图像、音频、视频、压缩文件等。python作为一种流行的编程语言,提供了多种方法和库,可以帮助我们读取

随着信息技术的不断发展,二进制数据已经成为了现代计算机应用中不可或缺的一部分。在许多情况下,我们需要读取和处理二进制数据,这些数据可能包括图像、音频、视频、压缩文件等。python作为一种流行的编程语言,提供了多种方法和库,可以帮助我们读取和处理各种类型的二进制数据。本文将介绍Python中读取二进制文件的方法和库,并且举例说明如何使用这些方法和库来处理不同类型的二进制数据。

以下是四个举例,详细介绍Python如何读取二进制文件。

① 使用open()函数读取二进制文件

在Python中,使用内置的open()函数可以打开文件。为了读取二进制文件,我们需要在打开文件时使用‘rb’模式。在这种模式下,读取的内容会以二进制形式返回。


例如,下面的代码可以读取一个名为“example.jpg”的图像文件。

with open('example.jpg', 'rb') as f:    image_data = f.read()

在这个代码中,我们使用了with语句来打开文件,这样可以在不需要文件时自动关闭文件。读取二进制数据后,我们可以将其存储在一个变量中。在本例中,我们将图像文件的二进制数据存储在了一个名为“image_data”的变量中。

举例分析——

这段Python代码可以用于读取名为"example.jpg"的二进制图像文件,并将其内容存储在一个变量(image_data)中。这个变量可以用于进一步的图像处理、分析或者存储。

举个例子,假设我们想要对这个图像进行简单的分析,比如计算图像的宽度和高度,可以使用Python的Pillow库来实现。下面是一个示例代码:

from PIL import Imagewith open('example.jpg', 'rb') as f:    image_data = f.read()image = Image.open(io.BytesIO(image_data))width, height = image.sizeprint(f"The image width is {width} and the height is {height}")

这个代码片段中,我们首先使用上面提到的代码段读取图像数据。然后,我们使用Pillow库中的Image类打开图像数据,并使用size属性获取图像的宽度和高度。最后,我们将这些信息输出到控制台。

需要注意的是,我们使用了io.BytesIO类来将二进制数据转换为内存中的图像对象。这是因为Pillow库无法直接处理二进制数据,需要将其转换为内存中的图像对象。

② 使用struct模块解析二进制数据

在处理二进制数据时,有时需要解析二进制数据中的特定部分。在这种情况下,可以使用Python的struct模块。

struct模块提供了一些函数,可以将二进制数据转换为Python中的数据类型。例如,下面的代码可以解析一个名为“example.bin”的二进制文件,该文件包含两个int类型的数据。

import structwith open('example.bin', 'rb') as f:    binary_data = f.read()first_int = struct.unpack('i', binary_data[:4])[0]second_int = struct.unpack('i', binary_data[4:])[0]print(f'The first integer is {first_int}')print(f'The second integer is {second_int}')

在这个代码中,我们使用了struct.unpack()函数将二进制数据转换为int类型的数据。在本例中,我们首先将前4个字节解析为一个int类型的数据,然后将剩余的字节解析为另一个int类型的数据。最后,我们使用print语句输出这两个数据。

举例分析——

这段Python代码可以用于读取名为"example.bin"的二进制文件,并将其内容解析成整数类型。这个例子中,我们假设"example.bin"包含两个32位的整数值,每个整数占用4个字节(即32位),并且这些整数以大端字节序(big-endian)存储在文件中。

一个典型的应用场景是解析二进制文件,特别是处理来自硬件设备或其他系统的数据。例如,假设我们有一个传感器设备,它每秒钟产生一个二进制数据文件,其中包含了传感器的读数。我们可以使用类似的代码来解析这些数据并进行进一步的分析或存储。

下面是一个示例代码:

import structwith open('sensor_data.bin', 'rb') as f:    binary_data = f.read()num_readings = len(binary_data) // 4readings = []for i in range(num_readings):    reading = struct.unpack('>f', binary_data[i*4:(i+1)*4])[0]    readings.append(reading)avg_reading = sum(readings) / num_readingsprint(f'The average sensor reading is {avg_reading}')

在这个示例代码中,我们假设"sensor_data.bin"包含若干个32位浮点数,每个浮点数占用4个字节,并且这些浮点数以大端字节序存储在文件中。我们首先读取整个文件的二进制数据,并计算出文件中包含的浮点数数量。然后,我们使用一个循环来逐个解析每个浮点数,并将其存储在一个列表中。最后,我们计算出这些浮点数的平均值,并将其输出到控制台。

需要注意的是,我们在unpack函数中使用了大端字节序的格式字符串(">f")来解析浮点数。这是因为大多数传感器设备使用的是大端字节序,需要按照相应的格式字符串来解析数据。

③ 使用numpy库读取二进制数据
在处理二进制数据时,常常需要将二进制数据转换为多维数组。在这种情况下,可以使用Python的numpy库。
numpy库提供了一些函数,可以将二进制数据转换为多维数组。例如,下面的代码可以读取一个名为“example.dat”的二进制数据文件,并将其转换为一个二维数组。

import numpy as npwith open('example.dat', 'rb') as f:    binary_data = f.read()array_data = np.frombuffer(binary_data, dtype=np.float32).reshape((3, 4))print(array_data)

在这个代码中,我们首先使用open()函数读取二进制数据文件。然后,我们使用numpy的frombuffer()函数将二进制数据转换为一个一维数组,使用dtype参数指定数组元素的类型。接下来,我们使用reshape()函数将一维数组转换为一个二维数组。最后,我们使用print语句输出这个数组。

举例分析——

这段Python代码可以用于读取名为"example.dat"的二进制数据文件,并将其内容转换成NumPy数组。在这个例子中,我们假设"example.dat"文件包含一个3x4的浮点数数组,每个浮点数占用4个字节。

一个典型的应用场景是读取由其他程序或库生成的二进制数据文件,并将其转换为NumPy数组进行进一步的分析或可视化。例如,假设我们使用c++编写了一个程序,生成了一个二进制文件,其中包含了某些数值的密度分布数据。我们可以使用类似的代码来读取这些数据并使用NumPy数组进行可视化或分析。

下面是一个示例代码:

import numpy as npimport matplotlib.pyplot as pltwith open('density_data.dat', 'rb') as f:    binary_data = f.read()density_data = np.frombuffer(binary_data, dtype=np.float32).reshape((100, 100))plt.imshow(density_data, cmap='viridis')plt.colorbar()plt.show()

在这个示例代码中,我们假设"density_data.dat"包含一个100x100的浮点数数组,表示某种密度分布数据。我们首先读取整个文件的二进制数据,并使用NumPy的frombuffer函数将其转换为浮点数数组。然后,我们使用Matplotlib库将数组中的数据可视化为一个热图,并添加一个颜色条来显示数据值的范围。

需要注意的是,我们在frombuffer函数中使用了dtype=np.float32参数来指定数组中元素的数据类型。这是因为我们假设数据文件中每个浮点数占用4个字节,因此需要使用np.float32类型来正确地解析数据。

④ 使用Pillow库读取图像数据

Pillow库是Python中一个非常流行的图像处理库,可以读取和处理多种图像格式的文件。在处理图像时,我们通常需要读取图像数据并对其进行处理。以下是使用Pillow库读取图像数据的示例代码。

from PIL import Imagewith Image.open('example.jpg') as img:    image_data = img.tobytes()print(image_data[:10])

在这个代码中,我们首先使用Pillow库的Image.open()函数打开一个名为“example.jpg”的图像文件。然后,我们使用tobytes()函数将图像数据转换为一个字符串。最后,我们使用print语句输出字符串中的前10个字节。

举例分析——

这段Python代码可以用于读取名为"example.jpg"的图像文件,并将其像素数据转换为字节字符串。具体地,我们使用了Python Imaging Library (PIL) 中的Image类来打开图像文件,然后调用tobytes()函数将像素数据转换为字节字符串。

一个典型的应用场景是在图像处理中,例如图像压缩或数据增强。在这些任务中,我们通常需要使用二进制格式的图像数据来进行处理。例如,假设我们正在开发一个图像压缩算法,该算法需要将原始图像数据编码为一系列二进制数据。我们可以使用类似的代码将图像数据转换为字节字符串,并将其输入到压缩算法中。

下面是一个示例代码:

from PIL import Imageimport numpy as npwith Image.open('example.jpg') as img:    img_data = np.array(img)  # Convert image to NumPy array    compressed_data = my_compress_function(img_data)  # Compress image data# Write compressed data to filewith open('compressed_image.bin', 'wb') as f:    f.write(compressed_data)# Read compressed data from file and decompresswith open('compressed_image.bin', 'rb') as f:    compressed_data = f.read()decompressed_data = my_decompress_function(compressed_data)  # Decompress datareconstructed_img = Image.fromarray(decompressed_data)  # Convert data to image# Show reconstructed imagereconstructed_img.show()

在这个示例代码中,我们首先使用PIL库的Image类读取名为"example.jpg"的图像文件,并将其转换为NumPy数组。然后,我们使用一个自定义的压缩函数my_compress_function()将图像数据压缩,并将压缩后的数据写入到一个二进制文件"compressed_image.bin"中。

接下来,我们使用类似的代码从二进制文件中读取压缩后的数据,并使用另一个自定义的解压函数my_decompress_function()将其解压缩。最后,我们将解压缩后的数据转换为图像对象,并使用PIL库的Image类显示重构的图像。

需要注意的是,这只是一个简单的示例代码,实际的图像压缩算法可能会更加复杂,并且需要考虑许多其他因素,例如图像质量、压缩比率等。

总结——
本文主要介绍了Python中读取二进制文件的方法和库。我们首先了解了二进制文件和文本文件的区别,并说明了为什么需要读取二进制文件。接下来,我们给出了四个示例,包括使用open()函数读取二进制文件、使用struct模块解析二进制数据、使用numpy库读取二进制数据和使用Pillow库读取图像数据。这些方法和库可以帮助我们处理各种类型的二进制数据,包括图像、音频、视频、压缩文件等。最后,我们总结了Python读取二进制文件的方法和库的优势,包括灵活性、跨平台性、高效性等,这些优势使得Python成为一种非常适合处理二进制数据的语言。

来源地址:https://blog.csdn.net/weixin_44609920/article/details/130163005

--结束END--

本文标题: 5.7:Python如何读取二进制文件?

本文链接: https://www.lsjlt.com/news/389238.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 5.7:Python如何读取二进制文件?
    随着信息技术的不断发展,二进制数据已经成为了现代计算机应用中不可或缺的一部分。在许多情况下,我们需要读取和处理二进制数据,这些数据可能包括图像、音频、视频、压缩文件等。Python作为一种流行的编程语言,提供了多种方法和库,可以帮助我们读取...
    99+
    2023-09-01
    java linux 开发语言
  • python 读取二进制文件
    固定大小 from functools import partial i = 0 f = open('lgtm-monitor.dat', 'rb') f2 = open('f.txt', 'w') records = iter...
    99+
    2023-01-31
    二进制文件 python
  • C#中如何读取二进制文件
    C#中如何读取二进制文件,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#读取二进制文件当想到所有文件都转换为 XML时,确实是一件好事。但是,这并非事实。仍旧...
    99+
    2023-06-18
  • Java中读取二进制文件
    读写二进制文件常用的类有DataInputStream和DataOutputStream。 1、使用字节流读二进制文件         利用DataInputStream类读二进制文件,其实与利用FileInputStream类读文本文件及...
    99+
    2023-08-31
    java jvm
  • Python如何读取二进制数据
    在Python中,可以使用`open`函数来打开一个二进制文件,并使用`read`方法来读取二进制数据。下面是一个示例代码:```p...
    99+
    2023-09-08
    Python
  • 如何在 Python 中读写二进制文件?
    在 Python 中,读写二进制文件是一项基本的任务。二进制文件通常包含非文本数据,例如图像、音频、视频等。 本文将向您介绍如何在 Python 中读写二进制文件。 什么是二进制文件? 在计算机中,所有数据都以二进制形式存储。二进制文件是一...
    99+
    2023-10-01
    文件 numpy javascript
  • Matlab怎么读取二进制文件
    在MATLAB中,可以使用fread函数来读取二进制文件。fread函数的语法如下:data = fread(fileID, siz...
    99+
    2023-09-08
    Matlab
  • python读取二进制文件并对其转码
    使用python读取二进制文件并转码的方法:1.新建python项目;2.使用import方法导入struct模块;3.使用open函数打开二进制文件;4.使用read()方法读取文件内容;5.使用struct.unpack方法转换成文本;...
    99+
    2024-04-02
  • python 二进制文件的读写
    对于二进制代码的读取: import struct with open('valid0_0','rb') as f:#valid0_0二进制文件名 f.seek(0,2) n=f.tell() f.seek...
    99+
    2023-01-31
    二进制文件 python
  • C# BinaryReader实现读取二进制文件
    在 C# 以二进制形式读取数据时使用的是 BinaryReader 类。 BinaryReader 类中提供的构造方法有 3 种,具体的语法形式如下。 第1种形式: Binar...
    99+
    2024-04-02
  • Python怎么读写二进制文件
    本篇内容介绍了“Python怎么读写二进制文件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Python读写二进制文件使用python语言直...
    99+
    2023-06-04
  • PHP读取文件(可安全用于二进制文件)
    这篇文章将为大家详细讲解有关PHP读取文件(可安全用于二进制文件),小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 读取文件(可安全用于二进制文件) : 简介 读取文件是 PHP 开发中一项常见任务...
    99+
    2024-04-02
  • python怎么读文件变成二进制
    你可以使用`open()`函数以二进制模式打开文件。在打开文件时,将文件模式参数设置为`"rb"`,其中`"r"`表示只读,`"b"...
    99+
    2023-09-08
    python
  • Python读写二进制文件的实现
    目录1. 简介2. struct模块介绍3. struct模块中数据格式fmt对应C/C++和Python中的类型4. 实例5. Python 字符串前面加u,r,b,f的含义5.1...
    99+
    2023-05-15
    Python读写二进制文件 Python二进制文件读写
  • 如何使用 Golang 读写二进制文件?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • 怎么使用Python读写二进制文件
    这篇文章主要介绍“怎么使用Python读写二进制文件”,在日常操作中,相信很多人在怎么使用Python读写二进制文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Python读写二进制文件”的疑惑有所...
    99+
    2023-07-06
  • C\C++如何实现读写二进制文件
    这篇文章主要介绍“C\C++如何实现读写二进制文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C\C++如何实现读写二进制文件”文章能帮助大家解决问题。读写二进制文件打开文件fopen() 函数用...
    99+
    2023-07-05
  • 利用Python中的内置open函数读取二进制文件
    在python中读取一个文本文件相信大家都比较熟悉了,但如果我们遇到一个二进制文件要读取怎么办呢?我们尝试使用 Python 中的内置 open 函数使用默认读取模式读取 zip 文...
    99+
    2024-04-02
  • 3-6 读写二进制文件
    3-4  读写二进制文件 u本节学习目标: n了解二进制文件读取器/编写器 n学习建立BinaryReader类的一些主要方法 n学习建立BinaryWriter类的一些主要方法 n学习通过...
    99+
    2023-01-31
    二进制文件
  • 利用Java读取二进制文件实例详解
    前言本文主要给大家介绍了关于Java读取二进制文件的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。读Hex写CSVdata目录下有little-endian bin文件,2个字节代表一个数字。bin存储的数据格式...
    99+
    2023-05-31
    java 二进制文件 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作