文件操作
#绝对路径:从磁盘根目录开始一直到文件名
#相对路径:读取同一个文件夹下的文件,./文件名 ../返回上一层
#文件的读
#1、相对路径打开 f=open('userinfo') print(f.read()) f=open('./userinfo')
#2、绝对路径打开 #在路径前+r #f=open(r'E:\python\show\PycharmProjects\day4\userinfo',encoding='utf-8') # print(f.read()) #加\ 取消转义后面的所有字符 # f=open('E:\python\show\PycharmProjects\day4\\userinfo') # print(f.read())
#解决中文乱码问题,在后面加encoding='utf-8' f=open('userinfo',encoding='utf-8') # print(f.read()) #一次读取所有内容,文件有多大,都多少,占用多大内存 #f是一个文件句柄,所有和文件相关的操作都依赖f,也可以叫做文件操作符 # print(f.readline()) #一次读取一行,依次向下读,,读一行会换行,不知道哪里结束 # print(f.readline()) # print(f.readline()) # print(f.readline()) for line in f: line=line.strip() #去除换行 print(line) f.close()#关闭文件
文件的写
# #以写的方式打开一个存在的文件,相当于清空文件; # f=open('userinfo',mode='w',encoding='utf-8') # f.write('张三|777') # f.close() #以写的方式打开一个不存在的文件,相当于新建一个空文件 # f1=open('user.txt',mode='w',encoding='utf-8') # f1.write('老王|123\n') # f1.write('老张|456\n') # f1.close()
文件的追加
# f2=open('user.txt',mode='a',encoding='utf-8') # f2.write('老李|888') # f2.close()
读取视频/图片,以字节的形式读取 rb
# f3=open('img.png',mode='rb') # print(f3.read()) #一次性读完,不知道大小,内存容易爆 #视频/图片不能用for循环读取 没有行 #按字节的大小一点点读 # content=f3.read(1024) #一次读1024字节 # print(content)
import os #size=os.path.getsize(r'E:\python\show\PycharmProjects\day4\img.png') # print(size) # f3=open('img.png',mode='rb') # while size>1024: # content=f3.read(1024) # print(content) # size-=1024 # else: # content=f3.read(size) # print(content)
复制图片
#size=os.path.getsize(r'E:\python\show\PycharmProjects\day4\img.png') # print(size) # f3=open('img.png',mode='rb') # f4=open('img拷贝.png',mode='wb') # while size>1024: # content=f3.read(1024) # f4.write(content) # size-=1024 # else: # content=f3.read(size) # f4.write(content) # f3.close() # f4.close()
r+模式 读写,正常先读后写
# f=open('userinfo.txt',mode='r+',encoding='utf-8') # f.write('小伙子') # print(f.read()) # f.close() # f3=open('userinfo',mode='r+',encoding='utf-8') # print(f3.read()) # # f2=open('user.txt',encoding='utf-8') # print(f2.readline()) # #从光标位置读,第一行读不出来 # for i in f2: # print('-------') # print(i)
w+模式 写读
# f5=open('userinfo',encoding='utf-8',mode='w+') # f5.write('果果爱吃棒棒糖') # f5.seek(0)#移动光标到开头 # print(f5.read()) # f5.close()
文件的指针
f6=open('userinfo',encoding='utf-8') print(f6.readline()) print(f6.tell())#查看指针的位置,\n算2个字节 #seek(n) 移动的单位是byte #移动到开头 seek(0) #移动到结尾 seek(0,2) seek第二个参数表示从哪个位置进行偏移,默认0,表示开头,1表示当前位置,2表示结尾
文件的修改
# f1=open('user.txt',encoding='utf-8') # f2=open('b.txt',mode='w',encoding='utf-8') # for line in f1: # username,password=line.split('|') # if username=='老李': # password='999\n' # f2.write('|'.join([username,password])) # f1.close() # f2.close() # import os # os.remove('user.txt') # os.rename('b.txt','user.txt')