文件的读写
文件的读取
# file=open('read1','r',encoding='utf-8') # print(file.read()) # file.closed file=open('read1','r',encoding='utf-8') # print(file.readline(),end='')#加上end='' 去掉自动换行 # print(file.readline()) # file.closed print(file.readlines())
写文件
file=open('write1','w',encoding='utf-8')#如果没有文件会创建新的文件,如果有则会覆盖原文件 file.writelines(['你是一头小毛驴。\n 我从来都不骑\n', '有一天……'])#全是字符串,不能带数字 file.closed
追加文件
file=open('read1','a',encoding='utf-8') file.write('哈哈哈') file.closed
文件其他处理模式
# f=open('xxx','r+',encoding='gbk') # # data=f.read() # # print(data) # # f.write('123sb') # # # # f.write('sb') #文件修改 # src_f=open('xxx','r',encoding='gbk') # data=src_f.readlines() # src_f.close() # # # for i in data: # # print(i) # print(data) # dst_f=open('xxx','w',encoding='gbk') # # dst_f.writelines(data) # dst_f.write(data[0]) # dst_f.close()
#with open 内部封装了close 不用单独写close
# with open('a.txt','w') as f:
# f.write('1111\n')
# src_f=open('xxx','r',encoding='gbk')
# dst_f=open('xxx','w',encoding='gbk')
#with 可以同时打卡多个文件 # with open('xxx','r',encoding='gbk') as src_f,\ # open('xxx_new','w',encoding='gbk') as dst_f: # data=src_f.read() # dst_f.write(data)#这就是从src_f中读取文件,原封不动的写到dst_f f=open('a.txt') print(f.encoding) #查看文件编码
二进制方式读取文件;因为文件中可能不只有文本,还可能有图片等,二进制方式打开文件还能跨平台
# f=open('test11.py','rb',encoding='utf-8') #b的方式不能指定编码 # f=open('test11.py','rb') #b的方式不能指定编码 # data=f.read() # #'字符串'---------encode---------》bytes # #bytes---------decode---------》'字符串' # print(data) # print(data.decode('utf-8')) # f.close() # f=open('test22.py','wb') #b的方式不能指定编码 # f.write(bytes('1111\n',encoding='utf-8')) # f.write('杨件'.encode('utf-8')) f=open('test22.py','ab') #b的方式不能指定编码 # f.write('杨件'.encode('utf-8')) # open('a;ltxt','wt')
文件的其他操作:
# f=open('a.txt','r+',encoding='gb2312') # # data=f.read() # # print(data) # f.write('你好') # f=open('b.txt','r+',encoding='latin-1') # data=f.read() # print(data) # f.write('aaaaaaaaaaa') # f=open('b.txt','r',encoding='utf-8',newline='') #读取文件中真正的换行符号 # f=open('b.txt','r+',encoding='utf-8',newline='') #读取文件中真正的换行符号 # print(f.closed) # print(f.encoding) # f.flush() # print(f.readlines()) # print(f.tell()) # f.readline() # print(f.tell()) # f.seek(1) # print(f.tell()) # print(f.readlines()) # f.seek(3) # print(f.tell()) # print(f.read()) # data=f.read(1) # print(data) # f.truncate(10) # f.flush() #讲文件内容从内存刷到硬盘 # # f.closed #文件如果关闭则返回True # # f.encoding #查看使用open打开文件的编码 # f.tell() #查看文件处理当前的光标位置 # # f.seek(3) #从开头开始算,将光标移动到第三个字节 # f.truncate(10) #从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写方式打开,但是w和w+除外 # # f=open('d.txt','r',newline='') # # data=f.readline().encode('utf-8') # print(data) # print(f.tell()) # f=open('seek.txt','r',encoding='utf-8') # print(f.tell()) # f.seek(10) # print(f.tell()) # f.seek(3) # print(f.tell()) # f=open('seek.txt','rb') # print(f.tell()) # f.seek(10,1) # print(f.tell()) # f.seek(3,1) # print(f.tell()) # f=open('seek.txt','rb') # print(f.tell()) # f.seek(-5,2) # print(f.read()) # print(f.tell()) # f.seek(3,1) # print(f.tell()) # f=open('日志文件','rb') # data=f.readlines() # print(data[-1].decode('utf-8')) f=open('日志文件','rb') # for i in f.readlines(): # print(i) #循环文件的推荐方式 # for i in f: # print(i) for i in f: offs=-10 while True: f.seek(offs,2) data=f.readlines() if len(data) > 1: print('文件的最后一行是%s' %(data[-1].decode('utf-8'))) break offs*=2