day13 课程(文件操作 & r|w|a & read & readlines & readline & seek)
课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=244
13.1 了解文件操作
13.1.1 目标
文件操作的作用
文件的基本操作
打开
读写
关闭
文件备份
文件和文件夹的操作
13.1.2 文件操作的作用
思考:文件操作包括什么?
答:打开、关闭、读、写、复制...
思考:文件操作的作用是什么?
答:读取内容、写入内容、备份内容...
总结:文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力
13.2 体验文件操作步骤
13.2.1 文件操作步骤
1.打开文件
2.读写等操作
3.关闭文件:不关闭,将一直打开文件,占用内存
注意:可以只打开和关闭文件,不进行任何读写操作
13.2.2 打开
在 Python ,使用 open 函数,可以打开一个已经存在的文件或者创建一个新文件
# 语法 open(name, mode)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode:设置打开文件的模式(访问模式):只读、写入、追加等
13.2.3 体验文件操作
# 1.打开 f = open("test.tst", "w") # 2.写入 f.write("aaa") # 3.关闭 f.close() ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day13\01.体验文件操作步骤.py Process finished with exit code 0
13.2.4 执行过程
13.3 访问模式特点01
模式 | 描述 |
r | 以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式 |
rb | 以二进制格式打开一个文件用于只读,文件指针将会放在放在文件的开头,这是默认模式 |
r+ | 打开一个文件用于读写,文件指针将会放在文件的开头 |
rb+ | 以二进制格式打开一个文件用于读写,文件指针将会放在的开头 |
w |
打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件 |
wb | 以二进制格式打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件 |
w+ | 打开一个文件用于读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件 |
wb+ | 以二进制格式打开一个文件用于读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除,如果该文件不存在,创建新文件 |
a |
打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写入到已有内容之后,如果文件不存在,创建新文件进行写入 |
ab | 以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入 |
a+ | 打开一个文件用于读写,如果该文件已存在,文件指针将会放在文件的结尾,文件打开时会是追加模式,如果文件不存在,创建新文件用于读写 |
ab+ | 以二进制格式打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,如果该文件不存在,创建新文件用于读写 |
# r 如果文件不存在 报错. 不支持写入操作,表示只读 # f = open("test.txt","r") # 文件上一节创建过, 因此文件存在, 不报错 # f.close() # f = open("test1.txt","r") # 文件不存在 报错:FileNotFoundError: [Errno 2] No such file or directory: 'test1.txt' # f.close() # f = open("test.txt","r") # r 只读不支持写入 报错:io.UnsupportedOperation: not writable # f.write("aa") # f.close() # w 文件不存在,新建. 执行写入,会覆盖原文件 # f = open("1.txt", "w") # 文件不存在 新建了文件 # f.close() # f = open("1.txt", "w") # 文件不存在 新建了文件 # f.write("bbb") # 原文件中有 aaa 内容,执行以后,内容只剩下 bbb, 覆盖了原文件内容 # f.close() # a 追加 文件不存在,新建. 执行追加,在原有内容基础上,追加新内容 # f = open("2.txt", "a") # 文件不存在 新建了文件 # f.close() # f = open("2.txt","a") # 文件不存在 新建了文件 # f.write("xyz") # 当原文件中有 abc 内容, 执行以后 内容变成 abcxyz # f.close() # 访问模式参数可以省略, 如果省略表示访问模式为 r # f = open('3.txt') # f.close()
13.4 读取函数之 read
# 语法 文件对象.read(num) # num 参数可选
num 表示要从文件中读取的数据的长度(单位是字节),如果没有传入 num ,那么就表示读取文件中所有的数据
# 创建一个 test.txt 文件 aaaaa bbbbb ccccc ddddd eeeee
f = open("test.txt","r") # print(f.read()) # read 不写参数, 表示读取所有 print(f.read(10)) # 10个字节数据, 计算机底层 换行是 \n 字符, 所以显示 10 个字节 aaaaa\nbbbb f.close() ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe "D:\Pycharm\code\day13\03.读取函数之 read.py" aaaaa bbbb Process finished with exit code 0
13.5 读取函数之 readlines
readlines 可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
f = open("test.txt", "r") print(f.readlines()) # 按行读取, 返回列表, 每行数据为列表中的一个元素, 连带\n 一并读取 f.close() ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe "D:\Pycharm\code\day13\04.读取函数之 readlines.py" ['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd\n', 'eeeee'] Process finished with exit code 0
13.6 读取函数之 readline
readline 一次读取一行内容
f = open("test.txt") print(f.readline()) # 这里 aaaaa 为一行, 直接输出一行内容, print 输出 end='\n' 所以有个空行 print("----------") print(f.readline()) print("----------") print(f.readline()) f.close() ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe "D:\Pycharm\code\day13\05.读取函数之 readline.py" aaaaa ---------- bbbbb ---------- ccccc Process finished with exit code 0
13.7 访问模式特点02
r、rb、r+、rb+ :读、二进制读、读写、二进制读写(遵循主模式 r,文件不存在会报错,文件指针都在开头) w、wb、w+、wb+:写、二进制写、读写、二进制读写(遵循主模式 w,文件不存在会新建文件,文件指针都在开头) a、ab、a+、ab+:追加、二进制追加、追加写入、二进制追加写入(遵循主模式 a,文件不存在会新建文件,文件指针都在结尾) 带 b : 二进制格式 带 + : 可读可写
13.8 访问模式特点02之代码测试
# f1 = open("test.txt", "r+") # 存在文件,没有报错 # f1.close() # f2 = open("test1.txt", "r+") # 不存在文件,报错:FileNotFoundError: [Errno 2] No such file or directory: 'test1.txt' # f2.close() # f3 = open("test.txt","r+") # 文件指针在开头, 能读取出来数据 # print(f3.read()) # f3.close() # f4 = open("test1.txt","w+") # 文件不存在, 但新建了文件 test1.txt # print(f4.read()) # f4.close() # f5 = open("test.txt","w+") # 文件存在, 文件指针也在开头, 但读取不出来数据, 因为 w 会用新内容覆盖原内容, 新内容写入空 # print(f5.read()) # f5.close() # f6 = open("test2.txt","a+") # 文件不存在, 但新建了文件 test2.txt # print(f6.read()) # f6.close() # 此操作需要再将上面 test.txt数据内容 复制到 test.txt 文件 # f7 = open("test.txt","a+") # 文件存在,文件指针在结尾, 所以结尾向后读取不出来数据 # print(f7.read()) # f7.close()
13.9 seek函数
作用:用来移动文件指针
# 语法 文件对象.seek(偏移量, 起始位置)
起始位置:
0:文件开头
1:当前位置
2:文件结尾
# f1 = open("test.txt","r+") # print(f1.read()) # 全部打印 aaaaa 开始 # f1.seek(2, 0) # 0 或 1 都可以,r 模式默认就是开头, 向后偏移量 2 个 # print(f1.read()) # 打印 aaa , 因为 偏移量是 2, 前面 aa 被文件指针偏移 # f1.close() # f2 = open("test.txt","r+") # f2.seek(0, 2) # 文件指针偏移到结尾 # print(f2.read()) # 即使是 r模式也不打印, 因为指针被偏移到结尾,读取结尾后 也没有数据 # f2.close() # f3 = open("test.txt","a+") # f3.seek(0, 0) # 文件指针偏移到开头 也可写 seek(0) # print(f3.read()) # 即使是 a模式也能打印, 因为指针被偏移到开头,从开头开始读取数据 # f3.close()
13.10 文件备份的作用
程序员每天与数据打交道,要保证数据的安全性所以需要对重要文件进行备份
需求:用户输入当前目录下任意文件名,程序完成对该文件的备份功能( 备份文件名为 xx[备份]后缀,例如 test[备份].txt )
13.11 文件备份思路分析
1.接收用户输入的文件名
2.规划备份文件名
3.备份文件写入数据 (1)打开文件 (2)写入文件 (3)关闭文件
13.12 文件备份之接收用户输入
# 1.用户输入目标文件 old_name = input("请输入您要备份的文件名:") print(old_name) # 后面辅助 print(type(old_name)) # 后面辅助 ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day13\08.文件备份之接收用户输入.py 请输入您要备份的文件名:1.txt 1.txt <class 'str'> Process finished with exit code 0
13.13 文件备份之规划文件名
# 1.用户输入目标文件 old_name = input("请输入您要备份的文件名:") # print(old_name) # 后面辅助 # print(type(old_name)) # 后面辅助 # 2.规划备份文件名的名字 # 2.1 提取目标文件后缀 index = old_name.rfind('.') # 从后往前, 找到. 后缀时的下标 # 2.2 组织备份的文件名, xx[备份]后缀 # print(old_name[:index]) # . 前缀 # print(old_name[index:]) # . 后缀 new_name = old_name[:index] + '[备份]' + old_name[index:] print(new_name) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day13\09.文件备份之规划文件名.py 请输入您要备份的文件名:111.txt 111[备份].txt Process finished with exit code 0
13.14 文件备份之数据写入
------------------------------------------------ 执行后
13.15 文件备份之限制有效文件备份
------------------------------------------------ 执行后
13.16 文件操作函数
------------------------------------------------ 执行后
13.17 文件夹操作函数之创建和删除
------------------------------------------------ 执行后
13.18 文件夹操作函数之路径相关函数
------------------------------------------------ 执行后
13.19 文件夹操作函数之rename
------------------------------------------------ 执行后
13.20 批量重命名之添加字符串
------------------------------------------------ 执行后
13.21 批量重命名之添加和删除字符串
------------------------------------------------ 执行后
13.22 文件总结
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习