文件句柄 = open(‘文件路径’,‘模式’, ‘字符编码‘)
1 #1. 打开文件open,得到文件句柄并赋值给一个变量 2 f=open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) #默认打开模式就为r 3 4 #2. 通过句柄对文件进行操作 5 data=f.read() 6 7 #3. 注意关闭文件,防止占用资源 8 f.close()
# 单个文件操作,as后为变量名称 with open("一首诗",mode="r",encoding="UTF-8") as f: pass # 可多文件进行操作 with open("一首诗", mode="r", encoding="UTF-8") as f,open("一首词", mode="w", encoding="UTF-8"): pass
encoding,用字符编码,可防止打开的文件乱码!
#1. 打开文件的模式有(默认为文本模式): r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 w,只写模式【不可读;不存在则创建;存在则清空内容】 a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】 #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式) rb wb ab 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 #3,‘+’模式(就是增加了一个功能) r+, 读写【可读,可写】 w+,写读【可写,可读】 a+, 写读【可写,可读】 #4,以bytes类型操作的读写,写读,写读模式 r+b, 读写【可读,可写】 w+b,写读【可写,可读】 a+b, 写读【可写,可读】
常用的操作方法
read(3):
1. 文件打开方式为文本模式时,代表读取3个字符
2. 文件打开方式为b模式时,代表读取3个字节
其余的文件内光标移动都是以字节为单位的如:seek,tell,truncate
注意:
1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的
2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果
1 f = open("一首诗",mode="r",encoding="UTF-8") 2 b = f.read() 3 print(b) # 人生若只如初见,何事悲风秋画扇 4 f.seek(3) # 光标移动都是以字节为单位 5 b = f.read() 6 print(b) # 生若只如初见,何事悲风秋画扇 7 print(f.tell()) # 43 光标位置 8 print(f.readline()) #一行一样读 9 print(f.readlines()) # 一次性读取整个文件,自动将文件内容分析成一个行的列表 10 f.close()
1 f = open("一首诗",mode="w",encoding="UTF-8") 2 f.write("****") # 只写模式【不可读;不存在则创建;存在则清空内容】
原文:https://www.cnblogs.com/zxq520921/p/9375084.html