文件打开操作有两种方式:
open("绝对/相对路径",mode="读写模式",encoding="编码格式")
模式共有,r,r+,w,w+,a,a+,(操作字符)以及b模式(操作字节)
1 f = open("文件",mode="r",encoding="utf-8") #需要手动close()文件,否则继续操作会报错 2 with open("文件","w+",encoding="utf-8") as f: #操作完会自动关闭文件
r和r+模式:
只读模式,从文件开头读取,不能写入,会报错
1 with open("文件","r",encoding="utf-8") as f: #操作完会自动关闭文件 2 print(f.read()) 3 f.write("这句话已经写入了!")
结果对照:
1 "D:Program Filespython.exe" D:/学习/文件.py 2 这是一个实验文件!! 3 Traceback (most recent call last): 4 File "D:/学习/文件.py", line 4, in <module> 5 f.write("这句话已经写入了!") 6 io.UnsupportedOperation: not writable #不能写入
读写模式,光标最开始在文件头部,如果直接写入会替换现有文件...先读后写才会写入文件末尾
with open("文件","r+",encoding="utf-8") as f: #操作完会自动关闭文件 print(f.read()) f.write("这句话已经写入了!") #光标,开始是在文件头部,如果直接写入,会替换现有字符...先读后写是在末尾追加.
结果对照:
1 这是一个实验文件!!这句话已经写入了!
w和w+模式:
只写模式,只能写入,读取会报错,#注意每次打开都会先清空现有文件内容
1 with open("文件","w",encoding="utf-8") as f: #操作完会自动关闭文件 2 f.write("这句话已经写入了!") 3 print(f.read())
结果对照:
1 Traceback (most recent call last): 2 File "D:/学习/文件.py", line 4, in <module> 3 print(f.read()) 4 io.UnsupportedOperation: not readable
写读模式,光标默认为文件头部,每次打开都会清空文件现有内容
1 with open("文件","w+",encoding="utf-8") as f: #操作完会自动关闭文件 2 print(f.tell()) 3 f.write("这句话已经写入了!") 4 f.seek(0) 5 print(f.read())
结果对照:
1 0 2 这句话已经写入了!
a和a+,追加模式:
追加,只能写不能读,读取会报错,光标默认在文件末尾
1 with open("文件","a",encoding="utf-8") as f: #操作完会自动关闭文件 2 print(f.tell()) 3 f.write("这句话已经写入了!") 4 f.seek(0) 5 print(f.read())
结果对照:
1 25 2 Traceback (most recent call last): 3 File "D:/学习/文件.py", line 6, in <module> 4 print(f.read()) 5 io.UnsupportedOperation: not readable
追加读写,光标默认在文件末尾,
1 with open("文件","a+",encoding="utf-8") as f: #操作完会自动关闭文件 2 print(f.tell()) 3 f.write("这句话已经写入了!") 4 f.seek(0) 5 print(f.read())
结果对照;
1 0 2 这句话已经写入了!
文件操作汇总:
1 with open("文件","a+",encoding="utf-8") as f: #操作完会自动关闭文件 2 print(f.tell()) #查看光标位置,汉字占三个字符,, 3 print(f.seek(0)) #操作光标,一个参数0,为移动到文件头.两个参数(0,0)移动到文件头部,(0,1)维持现状(0,2)移动到文件末尾 4 print(f.write("哈")) #写入操作,可以给参数(要写入的内容),返回写入的字符数 5 print(f.read()) #一次性读取文件,文件较大时比较耗内存 6 print(f.readline()) #读取一行,返回字符串类型 7 print(f.readlines()) #一行行读取,但是读取所有内容,返回列表每个元素为每行的字符 8 print(f.close()) #关闭文件 9 print(f.flush()) #刷新,防止有残留未写入的内容 10 print(f.truncate()) #截断,返回光标位置.给定参数(光标位置),从光标位置开始截断.默认光标位置与读写模式有关
os模块下的常用操作:
1 import os 2 # os.remove() #删除文件 3 # os.rename() #修改文件名,前面是旧文件,后面是新文件 4 #print(os.name) #现实操作系统,nt为windows, 5 #print(os.getcwd()) #当前文件夹路径 6 #print(os.path.abspath("文件")) #查看文件的绝对路径