1、文件操作
文件:模特主妇护士老师.txt
打开txt,如果自己写一个软件打开需要:
(1)文件路径:d:\模特主妇护士老师.txt
(2)文件的编码方式:utf—8 gbk ..... ......
(3) 操作方式:只读、只写、追加、读写、写读 ... ...
(4)以什么编码方式储存的文件,就以什么编码打开进行操作。
只读:r rb
需要注意encoding表示编码集. 根据文件的实际保存编码进行获取数据, 对于我们而言. 更
多的是utf-8.
rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.
rb 的作用: 在读取非文本文件的时候. 比如读取MP3. 图像. 视频等信息的时候就需要用到rb.
扫描二维码关注公众号,回复:
6937668 查看本文章
因为这种数据是没办法直接显示出来的. 在后面我们文件上传下载的时候还会用到.
我们看的直播. 实际上都是这种数据.
只写:w wb
wb模式下. 可以不指定打开文件的编码. 但是在写文件的时候必须将字符串转化成utf-8的bytes数据
追加 :a ab
在追加模式下. 我们写入的内容会追加在文件的结尾.
读写 :r+ rb(bytes类型)
追加读:r+
# 文件操作 只读 # 绝对路径 从磁盘根目录开始一直到文件名 '''f = open('d:\流沙河.txt',mode='r',encoding='utf-8') #文件对象 content = f.read() # 通过对象.进行操作 (读取) print(content) f.close() # 不要忘了关掉文件''' # 相对路径:同一个文件夹下的文件. 相对于当前这个程序所在的文件夹而言. 如果在同 '''# 一个文件夹中. 则相对路径就是这个文件名. 如果在上一层文件夹. 则要../ # 推荐大家使用相对路径. 因为在我们把程序拷贝给别人使用的时候. 直接把项目拷贝走 # 就能运行. 但是如果用绝对路径. 那还需要拷贝外部的文件. f = open('流沙河',mode='r',encoding='utf-8') content = f.read() print(content,type(content)) # utf-8打开的文件为什么是unicode的str形式 f.close() ''' # bytes '''f = open('流沙河',mode='rb',) content = f.read() print(content) f.close()''' # 文件操作 只写 # 对于w:没有此文件就创建文件 '''f = open('log',mode='w',encoding='utf-8') f.write('哪吒闹海') f.close()''' # 对于w:有此文件的把原来的内容删掉显示新写的内容 '''f = open('log',mode='w',encoding='utf-8') f.write('东海龙王三太子') f.close()''' # bytse '''f = open('log',mode='wb') f.write('东海龙王三太子'.encode('utf-8')) f.close() ''' # 追加 光标 '''f = open('log',mode='a',encoding='utf-8') f.write('、三头六臂灵珠子') f.close()''' # bytse '''f = open('log',mode='ab') f.write('、三头六臂灵珠子'.encode('utf-8')) f.close()''' # 读写 r+ '''f = open('log',mode='r+',encoding='utf-8') print(f.read()) f.write('、暝灵石猴孙悟空') f.close()''' # 写读 写是第一步,所以会在最前边 会占前边的位置 '''f = open('log',mode='r+',encoding='utf-8') f.write('平天大圣牛魔王、') print(f.read()) f.close()''' # rb '''f = open('log',mode='r+b') print(f.read()) f.write('暝灵石猴孙悟空'.encode(utf-8)) f.close()''' # 写读 先将所有的内容清空. 然后写入. # 最后读取. 但是读取的内容是空的, 不常用 '''f = open('log',mode='w+',encoding='utf-8') f.write(' 铁扇公主 ') f.seek(0) # 调光标 print(f.read()) f.close()''' # 追加读 a+ '''f = open('log',mode='a+',encoding='utf-8') f.write(' 玉面狐狸 ') f.seek(0) print(f.read()) f.close()''' # 功能详解 '''f = open('log',mode='r+',encoding='utf-8') #seek按照字节定光标 utf-8一个字符3个字节 只能用3的倍数 f.seek(3) # content = f.read(2) 读出来都是字符,你能看到的最小单位 print(f.tell()) # 确定光标的位置 content = f.read() print(content) f.close()''' # 调节光标的位置 '''f = open('log',mode='a+',encoding='utf-8') f.write('齐天大圣') count = f.tell() f.seek(count-6) print(f.read()) f.close()''' # readable是否可读 '''f = open('log',mode='a+',encoding='utf-8') print(f.readable()) # 返回True 或者 Fals f.close()''' # f.readline() 一行一行的读 # f.readlines() 每一行当成列表中的一个元素,添加到list中 '''f = open('log',mode='r+',encoding='utf-8') line1 = f.readline() line2 = f.readlines() print(line1) print(line2) f.close()''' # f.truncate() 对原文件截取 '''f = open('log',mode='r+',encoding='utf-8') f.truncate(1) f.close()''' # 循环打印 '''f = open('log',mode='r+',encoding='utf-8') for line in f: print(line) f.close()''' # 打开文件 自动关闭不需要f.close() '''with open('log',mode='r+',encoding='utf-8') as obj: # obj 是命名文件的变量,可随意 print(obj.read()) # 打开多个文件 with open('log',mode='r+',encoding='utf-8') as f,\ open('log',mode='r+',encoding='utf-8') as f1: print(f.read())''' # 注册加登陆三次机会 username = input('请输入你要注册的用户名:') password = input('请输入你要注册的密码:') with open('list_info',mode='w',encoding='utf-8')as f : f.write('{}\n{}'.format(username,password)) print('恭喜你注册成功') lis = [] i = 0 while i < 3: uname = input('请输入你的用户名:') pword = input('请输入你的密码:') with open('list_info',mode='r+',encoding='utf-8')as f1 : for line in f1: lis.append(line) if uname == lis[0].strip() and pword == lis[1].strip(): print('登陆成功') break else:print('账号密码错误') i += 1