python读写二进制文件的方法

当我们需要读写二进制文件时,常规的读写方式是不能完全满足需要的,此时,我们需要使用Python提供的专门针对二进制文件数据读写的函数。下面将详细介绍Python读写二进制文件的方法。

什么是二进制文件

在计算机存储中,文件是在硬盘等存储设备上保存的,而硬盘上的二进制文件,是由0和1组成的一长串数据。这些文件被称为二进制文件。

在Python中,我们通常称那些文本文件读写时,使用的是字符编码,而二进制文件读写则是直接读入字节流。

读二进制文件

在Python中,要打开并读取一个二进制文件,可以使用内置的open函数来实现。下面是文件打开并读字节的基本格式:

with open("file.bin", "rb") as f:
    byte = f.read(1)  # 读取二进制文件每一个字节
    while byte:
        # 把 byte 从字节类型转换为整型数据
        # 打印 byte 的 ASCII 码表
        print(ord(byte), end=" ")
        byte = f.read(1)  # 再次读取下一个字节

其中:

  • with 语句是 Python 中文件 I/O 的一种常见方式,可以很好地处理文件对象打开和关闭的问题,并且是一种优雅、简单和容错的方式。在离开 with 语句块之后,python 自动关闭文件。
  • 内置函数 open() 打开一个二进制文件,是读二进制文件需要包含的必要代码。第二个参数模式设置为 'rb' , 表示以只读模式读取二进制文件数据。
  • f.read(1) 读取一个字节数据。
  • ord(byte) 将一个字节数据转换为它的十进制 ASCII 码数值形式。

写入二进制文件

写入二进制文件时有几种不同的方式,最常见的是使用 Python 内置的 write() 函数直接将字节字符串写入文件:

with open("output.bin", "wb") as f:
    f.write(b'Hello World!')

其中:

  • as 语句是 Python 中文件 I/O 的一种常见方式之一,与 with 语句一起使用。它们将在文件对象上创建一个上下文环境,然后您可以通过该上下文环境相对而言地操作文件。在离开该上下文环境之后,python 自动关闭文件。
  • 参数模式第二个参数设置为 'wb',表示以bin二进制文件模式打开文件。这个模式下文件操作默认就是二进制。
  • 使用内建函数 write(),把字符串数据作为字节数据写入文件。

另一种向文件写入二进制文件的方式是使用列表、元组等 Python 序列。使用这种方式,可以通过连接或迭代获得完整的二进制文件内容。下面是使用 write() 函数及字节数组进行写入的例子:

with open("output.bin", "wb") as f:
    for byte in [0x10, 0x20, 0xFF]:
        f.write(bytes([byte]))

其中:

  • with 语句是 Python 中文件 I/O 的一种常见方式,可以很好地处理文件对象打开和关闭的问题,并且是一种优雅、简单和容错的方式。在离开 with 语句块之后,python 自动关闭文件。
  • 参数模式第二个参数设置为 'wb',表示以bin二进制文件模式打开文件。
  • 使用内建函数 write(),把列表数据写入文件。要注意的是,需要将字节列表转换为字节数组,即 bytes 对象。bytes 方法是 Python 内置的能够从迭代器或元组数据生成一个新的字节数组。

以上就是Python读写二进制文件的完整攻略,希望可以对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python读写二进制文件的方法 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • 使用Python爬虫库requests发送请求、传递URL参数、定制headers

    以下是关于使用Python爬虫库requests发送请求、传递URL参数、定制headers的攻略: 使用Python爬虫库requests发送请求、传递URL参数、定制headers requests是Python中一个流行的HTTP库,可以用于向Web服务器发送HTTP请求和接收响应。以下是使用Python爬虫库requests发送请求、传递URL参数、…

    python 2023年5月14日
    00
  • python3 sorted 如何实现自定义排序标准

    Python3中的sorted()函数可以按指定的规则对一个可迭代对象进行排序,默认是按照对象元素大小进行排序。但是,有时候我们需要按照自定义的规则进行排序,比如按照一个对象的某个属性进行排序。这时我们可以使用sorted()函数的key参数和cmp参数来实现自定义排序。 key参数实现自定义排序 key参数用来指定一个函数,此函数会在每个元素上执行,将元素…

    python 2023年5月14日
    00
  • Python正则表达式的应用详解

    Python正则表达式的应用详解 正则表达式是一种强大的文本处理工具,可以用于各种文本处理任务,如数据清洗、文本分析、提取等。在Python中,我们可以使用re模块来操作正则表达。本攻略详细讲解Python正则表达式的基本语法、常用函数和应用技巧,帮助读者快速掌握则表达式的用法。 正则表达式的基本语法 正则表达式是由普通字符和元字符组成的字符串,用于匹配文本…

    python 2023年5月14日
    00
  • python中取整数的几种方法

    下面给您详细讲解Python中取整数的几种方法。 一、使用int()函数 Python内置的int()函数可以将数字(包括字符串)化为整数,如果是小数,则会取整,取整的方式为向下取整。 例如: a = int(1.234) print(a) # 输出为1 二、使用math模块的floor()函数和ceil()函数 math模块是Python中常用的数学函数库…

    python 2023年6月3日
    00
  • 基于Python在MacOS上安装robotframework-ride

    下面是基于Python在MacOS上安装robotframework-ride的完整攻略: 安装Python 首先需要安装Python。可以通过官网下载安装包进行安装,或者使用Homebrew进行安装: brew install python3 安装pip 安装完Python后,需要再安装pip,pip是Python的包管理工具,用于安装和管理Python包…

    python 2023年6月2日
    00
  • Python使用urllib模块的urlopen超时问题解决方法

    什么是urlopen超时问题 在使用Python中的urllib模块的urlopen方法打开URL链接时,如果服务器响应时间超过默认的超时时间,那么该方法将会一直阻塞等待直到服务器响应完成,这就是urlopen的超时问题。 urlopen超时问题的解决方法 为了解决这个问题,可以使用以下两种方法: 2.1. 设置超时时间参数 在调用urlopen方法时,可以…

    python 2023年6月3日
    00
  • 13个有趣又好玩的Python游戏代码分享

    以下是详细讲解“13个有趣又好玩的Python游戏代码分享”的完整攻略,包含两个示例说明。 1. 猜数字游戏 猜数字游戏是一种简单而有趣的游戏,玩家需要猜测一个随机生成的数字。以下是一个使用Python实现猜数字游戏: import random number = random.randint(1, 100) guess = int(input("…

    python 2023年5月14日
    00
  • python for循环remove同一个list过程解析

    以下是“Python for循环remove同一个list过程解析”的完整攻略。 1. for循环remove同一个list的问题 在Python,如果在for循环中对同一个list进行remove操作,可能会导致一些意外的结果。这因为在进行remove操作时,list的长度会生变化,从而导致循环的索引出现问题。下面我们通过示例来说明个问题。 my_list…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部