129-文件基本操作
学习目标
1.了解文件操作的作用
2.掌握文件的基本操作如打开、读写、关闭等
3.掌握Python操作文件和文件夹的方法
4.能独立完成文件操作案例的编写
文件操作的目的是实现文件的永久保存
文件操作三步走
- 打开文件:
open(name, mode)
- name 代表要打开的文件路径 + 文件名
- mode 代表访问模式:
r/w/a
(模式不止这三个还有很多很多),看下下面的细说r
:read,只读模式,代表只能对文件进行读取,属于默认模式,如果要访问的文件不存在,则直接报错!w
:write,只写模式,代表只能对文件进行写入操作,如果访问的文件不存在则自动创建,写入数据到文件时,会覆盖源数据!(只会创建文件,不会创建文件夹❗)a
:append,追加模式(只写模式的一种),与w类似,如果文件不存在则创建,写入数据到文件时不会覆盖源数据而是在后面追加
open()
方法打开的文件返回的是一个文件对象(句柄)(对象的概念后面再学),之后对文件的操作都是对这个对象来操作f = open('python.txt','r',encoding='utf-8')
- 读写文件
f.write(content)
只能把字符串类型的数据写入到文件中f.write('fuck you')
- 关闭文件(释放内存空间)
f.close()
读取文件方法
打开文件 f = open()
→ 读取文件 → 关闭文件
read()
:一次性读取全部内容
- 参数是指定读取多少个字符
read(1)
,代表读取1个字符,不指定就是读取所有内容
f = open('python.txt','r', encoding='utf-8')
content = f.read() #读取文件所有内容
content = f.read(1) #代表只读取文件中的一个字符
print(content)
f.close
readlines()
:读取所有内容成列表,每个元素都是文件中的一行
- 只适合读小文件!
f = open('python.txt', 'r', encoding='utf-8')
content = f.readlines(
print(content)
f.close()
readline()
:一行一行读取,
.readline()
一次就读一行(读取一次向后移动一次),直到文件读取完毕,通常配合while True:
使用
f = open('python.txt', 'r', encoding='utf-8′)
while True:
content = f.readline()
#判断,如果读取不到任何内容,则结束循环
if not content:
break
#反之,如果没有执行break,则代表文件中还有内容
print(content, end='') # 思考为什么要 end=''
print(content)
f.close()
注意!编码问题
txt打开默认用utf8编码,python(大多数编程语言)输出的编码默认是ASCII编码
国际化组织 编码标准unicode → UTF-8
打开和写入要指定编码格式
f = open('python.txt','w',encoding='utf-8')
文件访问方式(mode)
r:只读
w:只写
a:追加
+:(增加读写功能 )加号代表既可以读取也可以写入
b:binary缩写形式,以二进制流的方式读取文件或写入数据到文件
rb
wb
ab
以上rb、wb、ab不仅可以针对文本文件,还可以针对图片、音频、视频文件进行读写操作
应用:文件备份
test.txt => test[backup].txt
# find方法找后缀
oldname = 'test.txt' 拆解文件名与文件的后缀
index = oldname.rfind('.')
#获取文件名称
filename = oldname[:index] # 切片只管前不管后 => test
postfix = oldname[index:] # => .txt
# 拼接新文件名
newname = filename + '[backup]' + postfix
# 创建文件句柄
old_f = open(oldname, 'rb') # 二进制流形式读
new_f = open(newname, 'wb') # 二进制流形式写
# 大文件分块读
while True:
content = old_f.read(1024)
if not content:
break
new_f.write(content)
# 关闭文件
old_f.close()
new_f.close()