当前位置:   article > 正文

二进制文件的Python写入_python写二进制文件

python写二进制文件
  • 二进制文件的Python编写
    • 这么基础的东西,必然用内置的就好

二进制文件的Python读写

重要提示

  • p.s. 1
  1. >>> b'Hello World'.decode() == "Hello World"
  2. True
  3. >>>

example

  1. import struct
  2. with open('binary_file.bin', 'wb') as file:
  3. data = b'\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64' # 二进制数据
  4. number = 42
  5. packed_data = struct.pack('I', number)
  6. file.write(data)
  7. file.write(packed_data)
  8. file.close()
  9. with open('binary_file.bin', 'rb') as file:
  10. data = file.read(len(data))
  11. packed_data = file.read()
  12. number = struct.unpack('I', packed_data)[0]
  13. print(data.decode())
  14. print(number)
  15. file.close()
  1. Hello World
  2. 42
  3. >>>

文件打开函数

打开模式参数

  • 'r':以只读模式打开文件。
    • 文件指针将位于文件的开头。如果文件不存在,将引发 FileNotFoundError。
  • 'w':以写入模式打开文件。
    • 如果文件已存在,则其内容将被截断为空。
    • 如果文件不存在,则创建新文件。
  • 'x':以排他性创建模式打开文件。
    • 如果文件已存在,则会引发 FileExistsError。
    • 如果文件不存在,则创建新文件。
  • 'a':以追加模式打开文件。
    • 文件指针将位于文件的末尾。
    • 如果文件不存在,则创建新文件。
  • 'b':以二进制模式打开文件,例如 'rb' 或 'wb'。
  • 't':以文本模式打开文件。
    • 这是默认模式,适用于处理文本文件。可以与其他模式一起使用,例如 'rt' 或 'wt'

文件读取函数

read()

  • 接受一个可选的参数,用于指定要读取的字节数
    • 默认值为 -1,表示读取整个文件
    • 上 example 已经可以清楚得说明了
  • 在UTF-8编码中,一个字节可以表示一个ASCII字符

文件写入函数

write()

  • 要写入文件的字节数据
  • 在二进制模式下,数据以字节的形式写入文件,而不会进行任何字符编码或解码
  1. string = "Hello, World!"
  2. byte_string = b"Hello, World!"
  3. print(type(string))
  4. print(type(byte_string))
  1. <class 'str'>
  2. <class 'bytes'>
  3. >>>
  • 要将数字写入二进制文件,需要将其转换为字节数据
    • 确保你选择的字节数 Bytes 能够容纳整数 number 的范围

example 02 

  1. number = 1200
  2. Bytes = 4
  3. byte_data = number.to_bytes(Bytes, 'big')
  4. with open('binary_file.bin', 'wb') as file:
  5. file.write(byte_data)
  6. with open('binary_file.bin', 'rb') as file:
  7. Number = file.read()
  8. NUMBER = int.from_bytes(Number, 'big')
  9. print(NUMBER)

 

  •  最大值为 (2**(8*Bytes-1))-1 
    • Bytes = 4,4294967295
  • Traceback (most recent call last):
    File "C:\Users\LX\Desktop\00.py", line 3, in <module>
        byte_data = number.to_bytes(Bytes, 'big')
    OverflowError: int too big to convert

seek()

  • 在二进制文件中移动文件指针的位置
  1. text_data = "Hello, World!"
  2. number = 12345
  3. with open('binary_file.bin', 'wb') as file:
  4. file.write(text_data.encode())
  5. file.seek(20)
  6. byte_data = number.to_bytes(4, 'big')
  7. file.write(byte_data)
  8. with open('binary_file.bin', 'rb') as file:
  9. text = file.read(10)
  10. print(text.decode())
  11. file.seek(20)
  12. data = file.read()
  13. print(int.from_bytes(data, 'big'))

tell()

  • 函数可以获取当前文件指针的位置
  • example
  1. text_data = "Hello, World!"
  2. number = 12345
  3. with open('binary_file.bin', 'wb') as file:
  4. file.write(text_data.encode())
  5. position = file.tell()
  6. byte_data = number.to_bytes(4, 'big')
  7. file.write(byte_data)
  8. with open('binary_file.bin', 'rb') as file:
  9. text = file.read(10)
  10. print(text.decode())
  11. file.seek(20)
  12. data = file.read()
  13. print(int.from_bytes(data, 'big'))

文件格式

  • 二进制文件:二进制文件是以字节为单位存储数据的文件。它们通常用于存储非文本数据,如图像、音频、视频等。
  • 文本文件:文本文件是以字符形式存储数据的文件。它们通常用于存储文本数据,如普通文本文件、配置文件等。
  • CSV文件:CSV(逗号分隔值)文件是一种常见的用途是存储表格数据的格式。它们使用逗号或其他分隔符来分隔不同的字段,并可以使用纯文本编辑器进行编辑。
  • JSON文件:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于存储和传输结构化数据。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/820525
推荐阅读
相关标签
  

闽ICP备14008679号