r 只读模式(只能看不能改)
# 路径不存在:直接报错withopen(r'b.txt', 'r', encoding='utf8') as f:
pass# 路径存在:withopen(r'a.txt','r', encoding='utf8') as f:
print(f.read()) # 读取文件内所有内容
f.write('123') # 写文件内容
w 只写模式(只能写不能看)
# 路径不存在:路径不存在自动创建withopen(r'b.txt', 'w', encoding='utf8') as f:
pass# 路径存在:1.会先清空文件内容 2.再执行写入操作
a 只追加写模式
# 路径不存在:自动创建withopen(r'a.txt','a',encoding='utf8') as f:
pass# 路径存在:不会清空文件 在文件末尾添加内容withopen(r'a.txt', 'a', encoding='utf8') as f:
f.write('\n在末尾添加!!!!')
# 注:r w a 读写模式只能操作文本文件
withopen(r'a.txt', 'r', encoding='utf8') as f:
# print(f.read()) # 一次性读取文件内所有的内容# print(f.read()) # 一次性读取文件内所有的内容# print(f.read()) # 一次性读取文件内所有的内容1. 一次性读完所有的内容,光标停留在了文件末尾 所以无法再次读取内容
2. 该方法在读取大文件的时候 可能会造成内存移除的情况
怎样解决上述情况呢:
for line in f: # 文件变量名f支持for循环 相当于一行行读取文件内容# 遇到多行文件内容的情况 一般采用for循环读取
文件操作模式
t 文本模式
1.默认的模式
r w a >>> rt wt at
2.该模式所有操作都是以字符串基本单位(文本)
3.该模式必须要指定encoding参数
4.该模式只能操作文本文件
b 二进制模式
1.该模式可以操作任意类型的文件
2.该模式所有操作都是以bytes类型(二进制)基本单位
3.该模式不需要指定encoding参数
rb wb ab
# 拷贝工具(支持所有类型):
res = input('请输入你要copy的文件路径及文件名:')
res2 = input('请输入需要copy到的路径及文件名:')
withopen (r'%s' % res, 'rb') as f1,open (r'%s' % res2, 'wb') as f2:
for i in f1:
f2.write(i)
方式1: 覆盖
withopen(r'c.txt','r',encoding='utf8') as f:
data = f.read()
print(type(data))
withopen(r'c.txt','w',encoding='utf8') as f1:
new_data = data.replace('tony','jason')
f1.write(new_data)
方式2: 新建
import os
withopen('c.txt', mode='rt', encoding='utf-8') as read_f, \
open('c.txt.swap', mode='wt', encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line.replace('SB', 'kevin'))
os.remove('c.txt') # 删除原文件
os.rename('c.txt.swap', 'c.txt') # 重命名文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)