Python文件操作详解:打开模式、字节处理与修改策略

林见深
林见深
发布时间:2026-10-14 | 4人浏览过
原创

本文详细解析Python中的文件操作,涵盖文本与字节两种打开模式的区别,重点讲解rb、wb、ab等字节模式的使用规范及注意事项。同时深入探讨文件修改的底层原理,介绍内存覆盖与双文件替换两种常见修改策略,帮助开发者掌握高效且安全的文件读写技巧。

一:文件的打开模式

理解字符编码有助于掌握文件存储机制:文件在硬盘中均以二进制形式存在。使用默认文本模式打开文件时,例如 f = open('a.txt','rt',encoding='utf-8'),其中的 't' 代表文本模式。应用程序向操作系统发送数据请求后,操作系统从硬盘读取二进制编码并返回给应用,open 方法随后将该编码解码为可读字符。若采用 'b' 模式打开文件,open 方法则不对操作系统返回的二进制数据做额外处理,直接输出原始字节。


f = open('a.txt','rt',encoding='utf-8') 

在文本模式('t')下,操作系统返回二进制编码后,open 方法会将其解码为用户可见的字符;而在字节模式('b')下,操作系统直接返回一串二进制数字,open 方法不做任何解码处理。

文件支持三种基本的打开方式:

只读模式:使用参数 'r'

只写方式:使用参数 'w'

追加模式:使用参数 'a'

使用字节模式打开文件时,需特别注意以下规范:

必须显式指定 'b' 参数,仅允许使用 rb、wb、ab 等形式打开文件,不可省略 'b'。


f = open('a.txt','rb')  
f = open('a.txt','wb') 
f = open('a.txt','ab') 
#错误写法
f = open('a.txt','r') #未注明以b模式打开,这种写法是默认文本模式打开 
f = open('a.txt','rb',encode = 'utf-8') #b模式打开,不能传入编码方式

字节模式下的读写操作均以 bytes 类型为单位。若需写入字符,必须先对字符进行编码,再以字节类型写入文件。


f = open('a.txt','wb')
f.write('你哈'.encode('utf-8'))

注意:对于非文本文件,必须使用字节模式。'b' 表示以字节方式操作,由于所有文件在底层均以字节形式存储,使用此模式无需考虑文本文件的字符编码、图片文件的 jpg 格式或视频文件的 avi 格式等具体问题。

二:字节模式下的操作

使用字节模式打开非文本文件(如图片、视频等)。


with open('1.jpg', 'rb') as f: # 以只读模式打开文件
  data = f.read()       # 读取文件全部内容,并赋值给变量data
print(data)           # 打印变量,我们得到是b'\xff\xd8\xff\xe0\x00这种形式的结果
print(type(data))        # 变量的类型<class 'bytes'>

with open('1.jpg','rb') as f:
    data = f.read()
print(type(data))
print(data.decode('utf-8'))   #将读取的编码以utf-8标准解码
                 #图片文件编码方式不是utf-8,所以不能解码,程序报错

以字节模式打开文本文件的操作示例。


with open('db.txt', 'rb') as f: 
  data = f.read()
print(data)         # 打印出来的是一串二进制数
print(data.decode('utf-8')) # 把二进制数用utf-8标准解码
print(type(data))      # 可以在屏幕上显示人类能看懂的字符了

with open('db.txt', 'wb') as f:
  f.write('你好啊\n'.encode('utf -8'))

在字节模式下操作文件时,所有读写操作均基于二进制数据进行。

三:文件的修改

文件修改并非直观上的“擦除后重写”,而是基于硬盘特性的“新内容覆盖原内容”。修改过程发生在内存中:应用程序启动后,从硬盘读取数据至内存,在内存中执行修改操作(此时不影响硬盘数据)。点击保存时,新数据覆盖原数据,从而完成文件修改。

修改文件方式一: 1:先把文件内容全部读取 2:在内存中修改 3:把修改好的内容覆盖写入到硬盘上


with open("db.txt", "r", encoding="utf-8") as f:  # 打开文件
  data = f.read()                # 读取文件全部内容
  data = data.replace("你好啊:", "======")    # 修改文件内容
  
with open("db.txt", "w", encoding="utf-8") as f:  # 以‘w'模式打开,清空文件
  f.write(data)                 # 把修改后的数据写入

修改文件方式二:

1:以读的方式打开源文件 2:以写的方式打开一个新文件


import os # 引入os模块

with open('a.txt', 'r', encoding='utf-8') as read_f, \
    open('new.txt', 'w', encoding='utf-8') as new_f: # 同时打开文件
  for line in read_f:                  # 循环原文件内容
    if '你好啊' in line:
      line = line.replace('你好啊', '哈哈哈哈哈哈') # 替换源文件内容
    new_f.write(line)                # 把原文件循环出来的内容写入到新文件中,
    
os.remove('a.txt')                   # 调用OS模块功能删除原文件
os.rename('new.txt', 'a.txt')              # 重命名新文件

以上就是详解Python中的文件操作的详细内容,更多关于python 文件操作的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表