python之路_文件操作解析
文件操作
一、操作文件三要素
1. 路径 #文件存放的具体位置的路径
2. 编码 #文件打开的的编码格式:utf-8
3. 模式
- rb:以字节的方式只读
obj = open('D:\美女模特空姐护士联系方式.txt',mode='rb') content = obj.read() obj.close() print(content,type(content)) #字节类型
- r: 读取utf-8编码数据,【转换】成unicode(str)编码的数据
#实例: obj=open('D:\美女模特空姐联系式.txt',encoding='utf-8',mode='r') content=obj.read() obj.close() print(content) #字符串格式
- r+:先读后写
# 情况一: obj = open('D:\美女模特空姐护士联系式.txt',mode='r+',encoding='utf-8') data = obj.read() # obj.write('6') # 在最后继续写 obj.close() print(data)
# 情况二: obj = open('D:\美女模特空姐护士联系式.txt',mode='r+',encoding='utf-8') data = obj.read() obj.seek(3) obj.write('6') # 定位到指定位置写 obj.close() print(data)
说明:
data = obj.read() # 读取所有文件内容
data = obj.read(2) # r模式:字符;rb模式:字节
obj.seek(2) # 永远是字节,指定指针位置
obj.tell() # 读取当前指针的位置
- r+b
- wb
实例: obj = open('美女.txt',mode='wb') obj.write("海角-贾敏22222".encode('utf-8')) obj.close()
- w:只读
实例: obj = open('美女.txt',mode='w',encoding='utf-8') obj.write("海角-贾敏") obj.close()
- w+:先读后写
- w+b
- ab:只追加
#实例: obj = open('美女.txt',mode='ab') obj.write("龙哥".encode('utf-8')) obj.close()
- a:只追加
#实例: obj = open('美女.txt',mode='a',encoding='utf-8') obj.write("小红") obj.close()
- a+
- a+b
功能:
obj = open(文件路径,mode='rb')
obj.read()
obj.write()
obj.seek()
obj.tell()
obj.close()
obj.flush()
obj.readline()
PS: 打开文件后,记着关闭文件
手动关闭:
obj = open(文件路径,mode='rb')
xxxx
obj.close()
自动关闭:
with open(文件路径,mode='rb') as obj:
obj.read() # 代码执行完毕后,自动关闭文件
二、文件逐行读取循环
例:
f=open('user.txt',encoding='utf-8',mode='r') name = input("请输入用户名:") pwd = input("请输入密码:") for line in f: val= line.strip().split('|') if name==val[0] and pwd==val[1]: print("登陆成功!")
注释:循环结束指针并未回到文件起始位置两种方法可以实现:重新打开文件或者f.seek(0)将指针强制放回起始位置
三、文件操作重点方法介绍
1、只读方法实例:
f = open('file',encoding='utf-8') #f文件句柄、文件操作符,默认只读模式 content1 = f.read() #read 读整个文件 返回一个字符串 f.seek(0) #将指针重新定位到文件起始,否则后面read方法无法执行 content2 = f.readlines() #read 读整个文件 返回一个列表 f.seek(0) content3 = f.readline() #readline 读一行 f.close() print(content1) print(content2) print(content3)
2、只写方法实例:(慎重!会将原文件内容清空)
f = open('file','w',encoding='utf-8') f.write('nezha|18|male') #写一个字符串 f.writelines() #将列表中的内容写入文件 f.close()
3、读写方法实例:
f = open('file','r+',encoding='utf-8') print(f.readline()) f.write('wusir|66|male') f.close() #输出结果说明:输出第一行,并在原文件夹最后追加写的内容
说明:(1)打开文件的时候:不清空文件 (2)当用户读取操作之后,写的所有内容都变成追写 (3)当用户不执行读操作,写默认从开始覆盖
4、文件修改实例:
f = open('file',encoding='utf-8') f2 = open('file_bak','w',encoding='utf-8') #文件本身不存在 for line in f: user_list = line.split('|') print(user_list) user_list[0] = user_list[0]+'_somebody' #print(user_list) user_str = '|'.join(user_list) print(user_str) f2.write(user_str) f.close() f2.close() import os #模块- 用来和操作系统交互的模块 os.remove('file') #删除一个文件 os.rename('file_bak','file') #重命名一个文件