AI闪电战:代码+实战 从Python速通到深度学习|文件操作高级技巧

想要查看本系列的其他文章请到作者主页中。 学习提示:在有别的编程基础之上,学习Python很简单,只是语法不同,所以有很多新的语法记不住也没关系,不用专门耗时间死记,实战的时候现用现查就行。
下面的介绍中是每个部分最常用的语法,基本能够应付绝大多数的情况,如果希望学习更详细的内容,可以参考每个部分给出的资料链接。

AI闪电战:代码+实战 从Python速通到深度学习|文件操作高级技巧


1. 处理二进制文件

作用

二进制文件处理主要用于操作非文本文件,如图像、音频、视频、以及某些特定格式的数据文件(如.exe、.bin)。与文本文件不同,二进制文件中数据以字节形式存储,必须用二进制模式读取和写入,以确保数据不会被误解或损坏。

常用语法

1.1 打开二进制文件

在 Python 中,我们使用 open() 函数,并加上模式 'b' 来打开二进制文件。

  • 'rb':以二进制模式只读文件。
  • 'wb':以二进制模式写入文件。
  • 'ab':以二进制模式追加写入文件。
# 假设 example.bin 文件中存储了以下字节数据:b'\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21'
# 示例:打开一个二进制文件进行读取
with open("example.bin", "rb") as file:
    binary_data = file.read()  # 读取整个二进制文件
    print(binary_data)  # 输出:b'\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21'
1.2 写入二进制文件

将数据写入二进制文件时,需要确保数据类型是字节(bytes)类型。如果要将字符串写入二进制文件,可以先使用 encode() 方法将其转为字节格式。

# 假设 example.bin 文件为空
# 示例:将数据写入二进制文件
data = b'\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21'  # 字节序列
with open("example.bin", "wb") as file:
    file.write(data)  # 写入字节数据

特别说明
在处理二进制文件时,数据通常以字节序列的形式存储和读取。字节序列是一系列二进制数字(通常以十六进制表示),而对应的文本序列则是通过编码(如 UTF-8 或 ASCII)将字节数据转换为可读的字符。

举例: 以下是字节序列和其对应的文本表示之间的转换示例。

字节序列(十六进制表示): b’\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21’

  • 这是一个二进制文件中的字节序列,每个字节使用 16 进制表示法。每个 \x 后面两个字符表示一个字节(8 位二进制数)。

  • 对应的 ASCII 文本表示为: Hello, World!

  • 解释:在 ASCII 编码中

    • \x48 对应字符 H
    • \x65 对应字符 e
    • \x6c 对应字符 l
    • \x6f 对应字符 o
    • \x2c 对应字符,
    • \x20 对应空格
    • \x57 对应字符 W
    • \x6f 对应字符 o
    • \x72 对应字符 r
    • \x6c 对应字符 l
    • \x64 对应字符 d
    • \x21 对应字符!

如果是字符串数据需要写入二进制文件,可以先进行编码:

# 假设 example.bin 文件为空
# 示例:将字符串编码为字节后写入二进制文件
# 定义一个字符串
text = "Hello, World!"

# 使用 with 语句打开一个名为 "example.bin" 的文件,模式为 "wb"(以二进制写入模式打开,如果文件不存在则创建,如果存在则覆盖)
with open("example.bin", "wb") as file:
    # 使用 encode("utf-8") 方法将字符串 text 按照 UTF-8 编码转换为字节序列
    # 然后使用 file.write() 方法将字节序列写入到打开的文件中
    file.write(text.encode("utf-8"))  # 使用 UTF-8 编码写入

特别解释
字符编码方案 就像是翻译不同语言的字典,它将计算机只懂的二进制(0 和 1)翻译成我们能理解的文字(如字母、数字、符号)。每个字符都会分配一个独特的数字(称为码点),然后通过编码方案把这个码点转换成二进制数据,这样计算机就能处理和存储字符。

常见的字符编码方案:
  1. ASCII(American Standard Code for Information Interchange):最早的编码方案之一,只用 7 位二进制(即 0 到 127)表示字符。它能编码英文字符和一些特殊符号,但无法表示其他语言的字符(比如中文)。

  2. ISO-8859-1:也叫拉丁字母 1,是扩展了 ASCII 的 8 位编码,能表示西欧的语言字符。

  3. UTF-8(Unicode Transformation Format -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能技术小白修炼手册

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值