python语法之文件处理
1、什么是文件
操作系统提供给你操作硬盘的一个工具
2、为什么要用文件
因为人类和计算机要永久保存数据
3、怎么用文件
相对路径:a.txt # 必须与当前py文件在同一级目录
绝对路径:D:\项目路径\pxxx\xxx\a.txt
f = open("a.txt") print(f.readable()) # 判断当前文件是否可读 print(f.writable()) # 判断当前文件是否可写 # del f # 回收变量资源 f.close() # 回收操作系统的资源 with open('a.txt',mode='r')as rf,\ open('a.txt',mode='w')as wf: # with会自动帮你回收操作系统的资源,无需自己操作 print(rf.readable()) print(wf.writable()) # r进行转义 with open(r'D:\项目路径\python13期\day07\a.txt')as f: print(f.read()) # 读取文件
4、文件处理模式
# 默认打开文件的模式:rt read text # rb read bytes with open(r'dir\a.txt',mode='rb')as f: print(f.read()) with open(r'th.jpg',mode='rb')as rf,\ open('lixiaoran.png',mode='wb')as wf: lixiaoran = rf.read() wf.write(lixiaoran)
5、文件打开模式
""" 打开文件的三种模式: r : 1、只读 2、如果文件不存在,会报错 w:(慎用) 1、只写 2、如果文件不存在,则新建一个文件写入数据 3、如果文件内存在数据,会将数据清空,重新写入 a: 1、追加写 2、如果文件内存在数据,会在已有数据的后面追加数据 3、如果文件不存在,则新建一个文件写入数据 处理文件的模式: t b """ with open(r'dir\b.txt','r',encoding='gbk')as f: print(f.readable()) print(f.read()) print(f.readline()) # 执行一次,打印一行内容 print(f.readlines()) print(f.read()) print(f.readable()) print(f.read()) for i in f: print(i) with open(r'dir\b.txt', 'w', encoding='gbk')as f: # f.write("nick is great") f.writelines(["bonny\n",'haha']) with open(r'dir\aaaaa.txt','a',encoding='gbk')as f: print(f.writable()) f.write("\nwonderful")
6、文件打开模式补充(了解)
# r+ 模式 有文件时追加写,没有文件报错 with open('a.txt','r+',encoding='utf-8')as f: f.read() f.write('我爱北京天安门') with open('b.txt','r+',encoding='utf-8')as f : f.write('小猪佩奇') #w+模式 清空原文件,写入新数据,没有原文件,创建新文件并写入数据 with open('a.txt','w+',encoding='utf-8')as f: f.write('肥洋洋\n') f.write('美洋洋\n') #a+模式 在原文件末尾追加写入数据,没有文件时创建新文件并写入数据
with open('a.txt','a+',encoding='utf-8')as f: f.write('灰太狼\n')
7、文件内光标的移动
''' f.seek(offset,whence) offset: 相对偏移度 (光标移动的位数)针对的是字节 whence:指定光标位置从何开始 0:从文件开头 1:从当前位置 2:从文件末尾 补充: utf-8: 中文是3个bytes 英文是1个bytes gbk: 中文是2个bytes 英文是1个bytes '''
#文件内光标的移动 with open(r'a.txt','r',encoding='utf-8')as f: f.seek(3,0) print(f.read(6))
结果:
#seek()参数1的使用 with open(r'a.txt','rb')as f: f.read(6) f.seek(3,1) print(f.tell()) print(f.read(3).decode('utf-8')) #seek()参数2的使用 with open(r'a.txt','rb')as f: # print(f.read()) f.seek(-6, 2) print(f.tell()) print(f.read(3).decode('utf-8'))
8、写入一个动态监测文件动态的脚步