字符编码 文件操作 登录注册功能
-
作业讲解
-
字符编码
-
文件操作
-
登录注册功能
今日内容详细
字符编码
""" 计算机是基于电工作的 而电信号只有高低电频两种状态 也就是说计算机只认识两种状态 人为的定义数字0和1的二进制 人类的字符与数字之间存在对应关系 相当于发电报彼此携带的密码本一样 """ 1.一家独大 计算机是美国人发明的 想让计算机认识英文 ASCII码 内部记录了英文与数字的对应关系
2.群雄割据 中国人 GBK码 韩国人 Euc_kr码 日本人 shift_JIS码 3.天下一统 Unicode码(万国码) 内部记录了各个国家文字与数字的对应关系 utf8(万国码优化版本) 目前默认使用该编码
""" 1.以后文本文件如果出现了乱码肯定是因为字符编码选错了 尝试切换字符编码即可 """
# 编码 按照指定的编码本将人类的字符编程成计算机能够识别的二进制数据 # 解码 按照指定的编码本将计算机的二进制数据解析成人类能够读懂的字符 """代码如何实现""" res = '年轻不是挥霍的资本 年轻应该实现更多的成就' # 编码 res1 = res.encode('gbk') print(res1) # 解码 res2 = res1.decode('gbk') print(res2)
# 第一种(推荐使用) with open(文件路径,读写模式,字符编码) as 变量名: with 子代码 # 第二种(不推荐使用) 变量名 = open(文件路径,读取模式,字符编码) 一系列操作 变量名 .colse()
r 只读模式 1.文件路径不存在会直接报错 2.文件存在则打开并读取文件内容 光标在文件开头 with open(r'aaa.txt','r',encoding='utf8' )as f: print(f.read()) # 一次性读取文件内容
w 只写模式 1.文件路径不存在会自动创建 2.文件路径存在会先清空文件内容然后再写入 with open(r'aaa.txt','w',encoding='utf8')as f: f.write('你好你好你好啊\n')
a 只追加模式 读取优化 with open(r'aaa.txt','r',encoding='utf8')as f: for line in f: # 一行行读取文件内容 能够避免内存溢出 print(line)
t模式 文本模式(也是上述三种读写模式的默认的模式) rt wt at 1.该模式只能操作文本文件 2.该模式下必须指定encoding参数 3.读写都是以字符串为单位 b模式 二进制模式 rb wb ab 1.该模式可以操作任意类型的文件 2.该模式下不需要指定encoding参数 3.读写都是以bytes为单位
编程题
1.利用文件操作编写一个简易的文件拷贝系统
让用户输入需要拷贝的文件路径
然后再获取即将拷贝到哪儿的路径
a = input('需要拷贝的文件路径:') b = input('拷贝到的文件路径:') with open(a, 'r', encoding='utf8') as f1: c = f1.read() with open(b, 'w', encoding='utf8') as f2: f2.write(c)
2.
利用文件操作完成用户的注册 登录
userinfo.txt
基本要求
用户注册获取用户名和密码然后写入文件 jason|123
登录获取用户名和密码之后去文件中比对
# 上述操作完成一次就算成功
a = input('请输入用户名:') b = input('请输入密码:') c = a + '|' + b with open(r'userinfo.txt', 'w', encoding='utf8')as x: x.write(c) print("注册成功!!") d = input('请输入注册的用户名:') e = input('请输入密码:') f = d + '|' + e with open(r'userinfo.txt', 'r', encoding='utf8')as y: y.read() ufo = y.read() if f == ufo: print('成功') else: print('失败')