python文件操作
1,文件操作
1.1:文件操作
# 文件操作 ''' python学习.pdf 1,文件路径: d:\python学习.pdf 2,编码方式: gbk,ascii,utf-8 3,操作方式:只读,只写,追加,读写,写读 文件以什么编码储存的,就要用什么编码方式打开 如果报错,看下是否隐藏文件的扩展名等问题 open,mode中只要有b ,后面就不要有编码方式 ''' # f = open('E:\python学习.txt',mode='r',encoding='utf-8') # 电脑中的觉对路径 # content = f.read() # print(content) # f.close() # 只读 r # f = open('python学习本地路径',mode='r',encoding='utf-8') # 相对路径 # content = f.read() # print(content) # f.close() # 只读 rb 用二进制打开,后面不要加编码方式,要不会报错 # f = open('python学习本地路径',mode='rb') # content = f.read() # print(content,type(content)) # b'\xe6\x9c\xac\xe5\x9c\xb0\xe8\xb7\xaf\xe5\x8a\xb2' <class 'bytes'> # f.close() # 只写 w 没有此文件就创建文件 # f = open('python学习本地路径02',mode='w',encoding='utf-8') # f.write('只写') # f.close() # 只写 w 如果有原文件,就把原文件内容删除,在写进去 # f = open('python学习本地路径02',mode='w',encoding='utf-8') # f.write('你好') # f.close() # 只写 wb # f = open('python学习本地路径02',mode='wb') # 后面不要编码方式,不然会报错 # f.write('只写'.encode('utf-8')) # 后面一定要编码,要不然会报错,如果用gbk方式写,pycharm默然是utf-8,文件打开会乱码。 # f.close() # 追加 a # f = open('python学习本地路径02',mode='a',encoding='utf-8') # f.write('baozi') # f.close() # 追加 ab # f = open('python学习本地路径02',mode='ab') # f.write('jason'.encode('utf-8')) # f.close() # 追加 a+ # f = open('python学习本地路径02',mode='a+',encoding='utf-8') # f.write('baozi') # f.seek(0) # print(f.read()) # 如果只是a,会报错,没有读的功能 # f.close() # 读写 r+ 先读再写 # f = open('python学习本地路径02',mode='r+',encoding='utf-8') # print(f.read()) # f.write("python9") # f.close() # 读写 r+ 先写再读 从光标的地方开始写入,写多少占多少,会出现问题的 # f = open('python学习本地路径02',mode='r+',encoding='utf-8') # f.write("aaaaaaaaaaaaaaaaaaaa") # print(f.read()) # f.close() # 写读 w+ 不常用 # f = open('python学习本地路径02',mode='w+',encoding='utf-8') # f.write("aaaaaaaaaaaaaaaaaaaa") # f.seek(0) # 调整光标 不加这一步读取不了,因为默认光标在最后一个 # print(f.read()) # f.close() # 功能详解 r+ # f = open('python学习本地路径02',mode = 'r+',encoding='utf-8') # f.seek(6) # seek是按照字节去定的位置,utf-8对于中文,三个字节一个字符。对于英文:1个字节一个字符 # #f.tell() # 查询,告诉你光标的位置 # print(f.tell()) # # 知道光标在哪里,调节光标的位置 # #f.seek(f.tell()-3) # content = f.read(3) # 字符:你能看到的这段文字的最小单位 read()里面代表从光标位置开始读取字符的数量, # print(content) # readline 一行一行的读取 # line = f.readline() # 默认读取第一行 # line = f.readlines() # 每一行当成列表的一个元素,添加到一个列表中 # ['杭州海博智能科技有限公司\n', '阿特拉斯浙江授权代理商\n', '主要为高端制造业提供智能装配系统'] # truncate() 对源文件截取,注意是按照字节去截取的 # 源文件: ''' 杭州海博智能科技有限公司 阿特拉斯浙江授权代理商 主要为高端制造业提供智能装配系统 ''' # f.truncate(6) # 杭州 # 补充 for循环一行一行的读取 ,如果文件太大就用for循环,因为每次内存中读取一行,不会全部读取出来 # for i in f: # print(i) # print() # f.close() # 补充:不需要在文件操作的末尾加close,就用with # with open('python学习本地路径02',mode = 'r+',encoding='utf-8') as f: # # 下面内容要有缩进 # print(f.read()) #补充:同时打开多个文件 with open('python学习本地路径02',mode = 'r+',encoding='utf-8') as f,open('python学习本地路径',mode = 'r+',encoding='utf-8') as f2: # 下面内容要有缩进 print(f.read(),f2.read()) # 下面内容要有缩进 print(f.read())
# 文件修改:不能被直接修改,要通过其他方式进行修改的 ''' 把源文件: 名称:阿特拉斯 型号:气动工具 气功工具改为电动工具 ''' with open('注册登录',encoding='utf-8') as f,open('注册登陆.bak','w',encoding='utf-8') as f2: for i in f: #print(i,type(i)) #f2.write(i) if '气' in i: i = i.replace('气','电') # 字符串替换 print(i) f2.write(i) # 注意这行代码的位置 # 删除文件,重命名文件 import os os.remove('注册登录') os.rename('注册登录.bak','注册登录')
1.1.1,注册登录题目
# 注册登陆题目 username = input('请输入你需要注册的用户名:') password = input('请输入你要注册的密码:') with open('注册登录',mode='w',encoding='utf-8') as f: f.write('{}\n{}'.format(username,password)) print('恭喜你,注册成功') lis = [] i = 0 while i < 3: print('请登录') name = input('请输入你的用户名:') psw = input('请输入你的密码:') with open('注册登录', mode='r+', encoding='utf-8') as f1: #info = f1.readlines() # 多行读取,把每一行当一个元素添加到列表中 for j in f1: print(j) lis.append(j.strip()) print(lis) if name == lis[0] and psw == lis[1]: print('登陆成功') break else: print('你输入的用户名和密码错误,请重新输入') i += 1 else: print('你已经超过三次输入错误,请稍后再试')