python day 8
1、文件操作
文件:模特主妇护士老师.txt
打开txt,如果自己写一个软件打开需要:
(1)文件路径:d:\模特主妇护士老师.txt
(2)文件的编码方式:utf—8 gbk ..... ......
(3) 操作方式:只读、只写、追加、读写、写读 ... ...
(4)以什么编码方式储存的文件,就以什么编码打开进行操作。
只读:r rb
需要注意encoding表示编码集. 根据文件的实际保存编码进行获取数据, 对于我们而言. 更
多的是utf-8.
rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集.
rb 的作用: 在读取非文本文件的时候. 比如读取MP3. 图像. 视频等信息的时候就需要用到rb.
因为这种数据是没办法直接显示出来的. 在后面我们文件上传下载的时候还会用到.
我们看的直播. 实际上都是这种数据.
只写: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
浙公网安备 33010602011771号