open()函数
打开文件
1 f = open("歌词", encoding = "utf-8") 2 data = f.read() 3 print(data) 4 f.close() 5 # 112 6 # 23445 7 # 123355 8 # 153454451515
另一种方式,不需自己close()
1 with open("a.txt","w") as f: 2 f.write('jgsgj') 3 #jgsgj
同时开两个
1 with open("a.txt","w") as f1, 2 open("b.txt","w") as f2: 3 f1.write('jgsgj') 4 #a.txt jgsgj 5 f2.write('jgsgj') 6 #b.txt jgsgj
读取文件中真正的换行符
1 f = open("test22","r",encoding = "utf8",newline ="" ) 2 print(f.readlines()) 3 #['11111 ', 'wwerqr ', '134tw']
只读 r
.readable()
判断是否可读
.readline()
每多写一次多读一行
1 f = open("歌词", "r",encoding = "utf-8") 2 #限制为只读: r 3 print(f.readable()) 4 # True 5 print(f.readline()) 6 #112 7 print(f.readline()) 8 #112 9 # 10 # 23445
注意:read()是读取全部,则再readline()是空的
.readlines()
把所有内容按行读取出来,打印成列表
1 f = open("歌词", "r",encoding = "utf-8") 2 data = f.readlines() 3 print(data) 4 # ['112 ', '23445 ', '123355 ', '153454451515']
只写 w
重建新文档,写模式
.writable()
判断是否可写
.write()
写入
1 f= open("写","w",encoding = "utf8") 2 f.write("12432 ") 3 f.write("wewjqwlg") 4 f.write("qwnegq") 5 # 12432 6 # wewjqwlgqwnegq
.writelines()
写入
1 f= open("写","w",encoding = "utf8") 2 f.writelines(["wengng ","wqengng ","weq "]) 3 f.write("aaqwlg ") 4 f.write("aaegq") 5 # wengng 6 # wqengng 7 # weq 8 # aaqwlg 9 # aaegq
注意:文件内容只能是字符串,只能写字符串
只追加 a
1 f= open("写","a",encoding = "utf8") 2 f.writelines(["写在最后一行 "]) 3 # aaegq 4 # 写在最后一行
其他模式:
r+ :读写
在原文件的最上面写
w+ :写读
x+ :写读
a+ :写读
b的模式:
rb 或 r+b
以二进制的方式操作文件,不能指定编码
1 f = open("test11.py","rb",encoding = "utf8") 2 #Wrong 因为已经是二进制的方式编码了
可以设置解码
1 f = open("test11","rb") 2 data = f.read() 3 #"字符串”——encode——>bytes 4 #bytes——decode——>"字符串" 5 print(data) 6 #b'234 qre 1011' 7 print(data.decode("utf8")) 8 # 234 9 # qre 10 # 1011
注意: 代表换行
wb 或 w+b
1 f = open("test22","wb") 2 f.write(b'11111 ') #以二进制方式写入,,仅ASCII字符可以 3 f.write(bytes("2222",encoding = "utf8")) #转成二进制,指定编码写入 4 f.write("杨".encode("utf8")) 5 # 11111 6 # 2222杨
xb 或 x+b
ab 或 a+b
会直接在最后一行后面写
1 f = open("test22","ab") 2 f.write("lalal".encode("utf8")) 3 # 11111 4 # 2222杨lalal
文件的其他操作方式
.closed
判断文件是否是关闭状态
1 print(f.closed) 2 # False
.encoding
显示文件的编码类型
1 f = open("test22") 2 print(f.encoding) 3 # cp936
cp936 gbk
.flush()
刷新
.tell()
显示当前光标所在位置(以字节为单位)
1 f = open("test.txt","r",encoding = "utf8") 2 print(f.tell()) 3 # 0 4 f.readline() 5 print(f.tell()) 6 # 8
.readline()
读一行,但是不打印
.seek()
用来控制光标的移动,以字节为单位,默认从0开始。
.seek(a,1) 以相对位置移动a字节,1就代表相对位置移动
.seek(-a,2) 倒着移动a字节
.read()
读取光标的位置,以字符为单位
读取日志的最后一行内容:
1 f = open("test.txt","rb") 2 for i in f: 3 char = - 15 4 while True: 5 f.seek(char,2) 6 date = f.readlines() 7 if len(date) > 1: 8 print("文件最后一行是%s" %(date[-1].decode("utf8"))) 9 break 10 else: 11 char *= 2
.truncate()
截取,是一种写操作