day09 文件处理

一、注册与登录功能

username = input('请输入您的密码:').strip()
password = input('请输入您的密码:').strip() f = open('a.txt',mode='rt',encoding='utf-8')
for line in f:
user,pwd = line.strip('\n').split(':') if username == user and password = pwd:
print('登陆成功')
break
else:
print('登录失败')
f.close()

二、字符编码

1 什么是字符编码
人类的字符转换成数字的过程称之为字符编码
该过程需要参照一张表,该表称之为字符编码表
编码
人类的字符-----------转换成--------------》数字 解码
人类的字符《-----------转换成--------------数字
2 字符编码表
a--00
b--01
c--10
d--1
ASCII: 用8bit对应一个英文字符
可以识别英文字符 gbk:用16bit对应一个字符
可以识别中文字符、英文字符 shift-JIS:
可以识别日文字符、英文字符 Euc-KR
可以识别韩文字符、英文字符 万国字符编码表:unicode,用16bit位对应一个字符
兼顾两大历史使命
1、可以识别万国字符
2、兼容老的字符编码格式 内存中用的字符编码格式默认都是unicode,而且不能改变
我们可以改的是存入硬盘的字符编码格式 万国字符------------》unicode格式的二进制(内存)---------》utf-8格式的二进制(硬盘)
中文、英文字符------------》unicode格式的二进制(内存)---------》GBK格式的二进制(硬盘)
日文、英文字符------------》unicode格式的二进制(内存)---------》shift-JIS格式的二进制(硬盘) utf-8全称Unicode Transformation Format,
若想保证不乱码
1、保证存不乱
存入硬盘的编码格式要能识别输入的字符 2、保证读不乱
存取硬盘用得都是同一种字符编码格式 3、往硬盘存的新文件以后都存成utf-8格式 python3解释器默认读文件的编码格式是utf-8
python3解释器默认读文件的编码格式是ASCII
推荐用python3解释器,因为python3解释器存字符串类型的值会存储unicode格式
如果用到python2解释器,记得在字符串类型前加前缀u

三、 文件的打开模式

文件的打开模式分为两大类
一 控制文件读写内容
t(默认):无论读写都是以字符串为单位的,必须指定encoding参数
b:无论读写都是以bytes为单位的 文件读写操作
r(默认):只读模式
w:只写
a:只写(追加写) rt wt at
rb wb ab
r:如果不存在则报错,如果文件存在则指针置于文件开头
with open('a.txt',mode='rt',encoding='utf-8') as f:
print(f.read())
print('='*50)
print(f.read())
for line in f:
print(line)
f.write("你好") # 报错
w:如果不存在则创建空文档,如果文件存在则清空,指针置于文件开头
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write("你好啊1\n")
f.write("你好啊2\n")
f.write("你好啊3\n")
print(f.read()) # 报错 a:如果不存在则创建空文档,如果文件存在则清空,指针置于文件末尾
with open('c.txt',mode='at',encoding='utf-8') as f:
f.write("你好啊1\n")
f.write("你好啊2\n")
f.write("你好啊3\n")
print(f.read()) # 报错

最新文章

  1. 创建或打开解决方案时提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案
  2. Python Turtle
  3. mysql分区操作
  4. vim--macro
  5. Xiaomi 手机
  6. MySQL监控系统MySQL MTOP的搭建
  7. android之费电检查 BetterBatteryStats
  8. ElasticSearch版本升级备忘录(1.5.2至2.3.1)
  9. 对 ASP.NET 页面进行跟踪(Control Tree)
  10. 设置firefox每次访问网页时检查所存网页的较新版本
  11. 使用Axis2创建一个简单的WebService服务
  12. Java 多线程篇
  13. 为什么NULL指针也能访问成员函数?(但不能访问成员变量)
  14. 初次安装git配置用户名和邮箱
  15. gdb入门
  16. jmap、jstack、jps无法连接jvm解决办法
  17. bootstrap增删改查
  18. [钉钉通知系列]SVN提交后自动推送消息到钉钉群
  19. Lucene系列一:搜索引擎核心理论
  20. c++之五谷杂粮---3

热门文章

  1. advanced base-scripting guide in chinese(高级Bash脚本编程指南-10)
  2. git与pycharm的使用详解(git+gitlab+pycham)
  3. "简单"的优化--希尔排序也没你想象中那么难
  4. JMeter跨线程组保持登录(多线程组共享cookie)
  5. 大白话讲解调用Redis的increment失败原因及推荐使用
  6. RISCV 入门 (学习笔记)
  7. CVE-2020-0796 RCE复现
  8. python3.7 pip
  9. JS和JQUERY常见函数封装方式
  10. [bzoj1741]穿越小行星群