python文件操作
一. 打开文件
1. 打开文件
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
open(name, mode)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。实际上为文件路径,默认为当前路径下
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
文件打开模式:
模式 描述 :--: ------------------------------------------------------------ r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
2. 获取文件对象
open函数的返回值即为文件对象,通过文件对象可以对文件进行读写
f = open('test.txt', 'w') print(type(f)) # <class '_io.TextIOWrapper'> print(f) # <_io.TextIOWrapper name='test.txt' mode='w' encoding='cp936'>
二. 写文件
1. 语法:
文件对象.write('内容')
2. 示例:
f = open('test.txt', 'w') f.write("abc") # 向文件中写入了‘abc’ f.close()
注意:
1. 打开模式为w时,如果文件不存在则创建文件,存在会清空文件
三. 读文件
1. 语法:
文件对象.read(num) # 读取指定字节数的内容,num不传则读所有 文件对象.readline() # 读取一行 文件对象.readlines() # 按照行的方式读取内容到一个列表,其中每一行的数据为一个元素。
说明:
1. 参数num表示要从文件中读取的数据的长度(单位是字节),如果read()没有传入num,那么就表示读取文件中所有的数据。
2. 示例:
test.txt文件内容:
aaaa
bbb
cccc
read(num)
f = open('test.txt') content = f.read(3) print(content) # aaa
readline()
f = open('test.txt') content = f.readline() print(content) # aaaa\n
readlines()
f = open('test.txt') content = f.readlines() print(content) # ['aaaa\n', 'bbb\n', 'cccc']
注意:
对文件进行操作时,存在指针,r、w模式打开时,指针默认在开头。a模式打开时指针默认在结尾,读取文件时,指针会相应的移动,读取多少字节,移动多少字节的位置
四. 移动指针
文件对象的指针可以通过seek()方法移动
语法:
文件对象.seek(偏移量, 起始位置)
起始位置可选值:
0:文件开头
1:当前位置
2:文件结尾
五. 文件关闭
语法:
文件对象.close()
六. 操作文件和文件夹模块:os
1. 导入模块
import os
2. 模块的方法
2.1 重命名文件:
import os # os.rename(目标文件名, 新文件名) os.rename('test.txt', 'aa.txt') os.rename('d:\\test.txt', 'd:\\aa.txt')
说明:
1. 两个参数实际上都为文件路径,默认为当前文件夹
2. 可实现文件的移动
2.2 删除文件:
import os # os.remove(目标文件) os.remove('a.txt') # FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'a.txt' os.remove('d:\\b\\bb.txt')
说明:移除不存在的文件时会报错
2.3 创建文件夹:
import os # os.mkdir(文件夹) os.mkdir('abc') os.mkdir('abc/c')
说明:只能创建一层文件夹,不能同时创建多级文件夹
2.4 删除文件夹
import os # os.rmdir(文件夹) os.rmdir("abc/b") # FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'abc/b' os.rmdir("abc/c")
说明:删除最后一级的文件夹,不存在则报错
2.5 获取当前目录
import os print(os.getcwd()) # C:\Users\11265\Desktop\code\venv
2.6 改变默认目录
import os os.chdir("d:") os.rmdir("b")
说明:默认情况下,默认目录为当前目录
2.7 获取目录列表
import os # os.listdir(目录) os.mkdir('abc/bb') os.mkdir('abc/cc') os.mkdir('abc/dd') print(os.listdir('abc')) # ['bb', 'cc', 'dd']
说明:会获取指定路径下的文件和文件夹列表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构