python中文件的基本操作、文件读写
python中文件的基本操作、文件读写
1. 基础操作
1.1 文件概念
文件就是存储在某种长期储存设备上的一段数据。
1.2 基础操作
- 打开文件
- 读、写文件
- 关闭文件
可以只打开和关闭文件,不进行任何读写操作。
1.3 文件对象的方法
1.3.1 open()
创建一个file
对象,默认是以只读模式打开。
1.3.2 read(n)
n表示从文件中读取的数据的长度,没有传n值就默认一次性读取文件的所有内容。
1.3.3 write()
将制定内容写入文件。
1.3.4 close()
关闭文件。
1.4 属性
1.4.1 文件名.name
返回要打开文件的文件名,可以包含文件的具体路径。
1.4.2 文件名.mode
返回要打开文件的访问模式。
1.4.3 文件名.closed
检测文件是否关闭,关闭就返回True。
代码示例:
# 1.打开文件
f = open("test.txt")
print(f.name)
print(f.mode)
print(f.closed)
# 2.关闭文件
f.close()
print(f.closed)
执行结果:
test.txt
r
False
True
1.5 访问模式
模式 | 可做操作 | 若文件不存在 | 是否覆盖 |
---|---|---|---|
r | 只能读 | 报错 | - |
r+ | 可读可写 | 报错 | 是 |
w | 只能写 | 创建 | 是 |
w+ | 可读可写 | 创建 | 是 |
a | 只能写 | 创建 | 否,追加写 |
a+ | 可读可写 | 创建 | 否,追加写 |
代码示例:
f = open("test.txt","r")
f.close()
- r 只读模式(默认模式):文件必须存在,不存在就会报错。
- w 只写模式:文件存在会先清空文件内容,在写入添加内容,不存在就创建新文件再写入添加内容。
- +:表示可以同时读写某个文件。
- 使用+会影响文件的读写效率,开发过程中更多的时候只会以只读、只写的方式来操作文件。
- r+:可读写文件,文件不存在就会报错。
- w+:先写再读,文件存在就会重新编辑文件,不存在就会创建新文件。
- a 追加模式:不存在就创建新文件进行写入,存在则在原有内容的基础上追加新的内容。
2. 读写操作
2.1 read(n)
n表示从文件中读取的数据的长度,没有传n值就默认一次性读取文件的所有内容。
f = open("test.txt")
# print(f)
# 1.read()方法
print(f.read())
print(f.read(5))
f.close()
2.2 readLine()
一次读取一行内容,方法执行完,会把文件指针移动到下一行,准备再次读取。
f = open("test.txt")
# print(f.readline())
# print(f.readline())
# print(f.readline())
while True:
line = f.readline()
if not line:
break
print(line)
f.close()
执行结果:
bingbing18
susu18
-1
2.3 readLines()
按照行的方式一次性读取全部内容,返回的是一个列表,每一行就是列表中的一个元素。
f = open("test.txt")
text = f.readlines()
print(text)
print(type(text))
f.close()
执行结果:
['bingbing18\n', 'susu18\n', '-1']
<class 'list'>
2.4 write()
写入内容。
f = open("test.txt")
# print(f.readline())
# print(f.readline())
# print(f.readline())
while True:
line = f.readline()
if not line:
break
print(line)
f.close()
执行结果:
bingbing18
susu18
-1
2.5 tell()&seek()
文件指针:标记从哪个位置开始读取数据。
tell()
:显示文件内当前位置,即文件指针当前位置。
seek(offset, whence)
:移动文件读取指针到指定位置。
offset
:偏移量,表示要移动的字节数。whence
:起始位置,表示移动字节的参考位置,默认是0,0代表文件开头作为参考位置,1代表当前位置作为参考位置,2代表将文件结尾作为参考位置。
seek(0,0)
会把文件指针移动到文件开头。
f = open("test.txt", "w+")
f.write("hello world")
pos = f.tell()
print("当前文件指针所在的位置:", pos)
f.seek(0, 0)
print(f.read())
f.close()
执行结果:
当前文件指针所在的位置: 11
hello world
2.6 with open
代码执行完,系统会自动调用f.close()
,可以省略文件关闭步骤。
seek(0,0)会把文件指针移动到文件开头。
with open("test.txt", "r") as f:
print(f.read())
print(f.closed)
print(f.closed)
执行结果:
hello world
False
True
3. 编码格式
file对象的encoding参数的默认值与平台有关,比如windows上默认字符编码为GBK。
encoding表示编码集,根据文件的实际保存编码进行获取数据,对于我们而言,更多使用的是UTF-8。
with open("test.txt", "w",encoding="utf-8") as f:
f.write("冰冰18岁\n")
with open("test.txt", "r",encoding="utf-8") as f:
print(f.read())
案例:图片复制 ‘rb’
"""
1. 读取图片
图片是一个二进制文件,使用二进制模式打开
2. 写入图片
写入图片也是二进制模式
"""
# 读取图片
with open("test.jpg", "rb") as f:
img = f.read()
print(img)
# 写入图片
with open("test2.jpg", "wb") as f:
f.write(img)
print("写入成功")
4. 目录常用操作
要导入模块os。
代码示例:
import os
# 1.文件重命名
os.rename("test.txt", "test1.txt")
# 2.删除文件
os.remove("test1.txt")
# 3.创建文件夹
os.mkdir("test")
# 4.获取当前目录
print(os.getcwd())
# 5.获取目录列表
print(os.listdir())
# 6.删除文件夹
os.rmdir("test")
4.1 os.rename()
os.rename(旧文件名,新文件名)
:文件重命名。
4.2 os.remove()
os.remove(目标文件名)
:删除文件。
4.3 os.mkdir()
os.mkdir(文件夹名)
:创建文件夹。
4.4 os.getcwd()
os.getcwd()
:获取当前目录。
4.5 os.listdir()
os.listdir(目录)
:获取目录列表。
4.6 os.rmdir()
os.rmdir(文件夹名)
:删除文件夹。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!