Python 以文本格式和二进制格式打开文件,有什么区别?

文摘   科技   2024-10-23 14:13   上海  

点击蓝字,关注山海摸鱼人

文本文件和二进制文件在存储方式上并没有本质的不同,它们都是以二进制的形式保存在磁盘上的。但是,在处理这些文件时,我们根据其内容的性质以及预期用途来区分它们。

文本文件

内容:主要包含可读字符,如字母、数字、符号等。
编码:使用特定的字符编码(如ASCII, UTF-8, GBK)将字符转换成二进制数据。
换行符

  • 在Windows系统中,通常使用 \r\n 作为换行符。
  • 在Unix/Linux系统中,通常使用 \n 作为换行符。
  • 在macOS(旧版本)中,曾使用 \r 作为换行符,但现代macOS已经统一为 \n

编辑器:可以使用文本编辑器(如Notepad, VSCode, Sublime Text)打开并阅读。
示例.txt, .csv, .py, .html 等。

二进制文件

内容:包含任意类型的数据,不仅仅是字符,还包括图像、音频、视频等非文本数据。
编码:没有特定的字符编码,直接存储原始二进制数据。
换行符:不适用,因为二进制文件中的数据不是以行的形式组织的。
编辑器:使用文本编辑器打开时会显示乱码,需要专门的应用程序或工具来解析和展示。
示例.jpg, .mp3, .avi, .exe 等。

open() 函数中的文本格式与二进制格式

在Python中,open() 函数用于打开文件,并可以通过指定不同的模式来控制如何读写文件。其中,模式字符串中的 'b' 标记表示以二进制格式打开文件,而没有 'b' 则表示以文本格式打开文件。

文本格式 ('r', 'w', 'a' 等)

换行符处理

  • 在Windows平台上,读取时会将 \r\n 转换成 \n,写入时会将 \n 转换成 \r\n
  • 在Unix/Linux平台上,换行符保持不变,即 \n

默认编码:如果没有指定 encoding 参数,open() 会使用操作系统的默认编码(例如在Windows上通常是 cp936utf-8)。
适用场景:适用于处理纯文本文件,如配置文件、日志文件等。

# 以文本模式打开文件
with open("example.txt""r", encoding="utf-8"as file:
    content = file.read()
    print(content)
二进制格式 ('rb', 'wb', 'ab' 等)

换行符处理:不进行任何换行符转换。
编码:不涉及字符编码,直接读取/写入原始字节。
适用场景:适用于处理图片、音频、视频等二进制数据文件。

# 以二进制模式打开文件
with open("image.jpg""rb"as image_file:
    binary_data = image_file.read()
    # 处理二进制数据...

山海摸鱼人
致力于记录美好之瞬间,追寻美好之明天。
 最新文章