day9 文件处理
2024-08-30 05:22:15
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()) # 报错
最新文章
- 创建或打开解决方案时提示";DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86";错误的解决方案
- Python Turtle
- mysql分区操作
- vim--macro
- Xiaomi 手机
- MySQL监控系统MySQL MTOP的搭建
- android之费电检查 BetterBatteryStats
- ElasticSearch版本升级备忘录(1.5.2至2.3.1)
- 对 ASP.NET 页面进行跟踪(Control Tree)
- 设置firefox每次访问网页时检查所存网页的较新版本
- 使用Axis2创建一个简单的WebService服务
- Java 多线程篇
- 为什么NULL指针也能访问成员函数?(但不能访问成员变量)
- 初次安装git配置用户名和邮箱
- gdb入门
- jmap、jstack、jps无法连接jvm解决办法
- bootstrap增删改查
- [钉钉通知系列]SVN提交后自动推送消息到钉钉群
- Lucene系列一:搜索引擎核心理论
- c++之五谷杂粮---3
热门文章
- advanced base-scripting guide in chinese(高级Bash脚本编程指南-10)
- git与pycharm的使用详解(git+gitlab+pycham)
- ";简单";的优化--希尔排序也没你想象中那么难
- JMeter跨线程组保持登录(多线程组共享cookie)
- 大白话讲解调用Redis的increment失败原因及推荐使用
- RISCV 入门 (学习笔记)
- CVE-2020-0796 RCE复现
- python3.7 pip
- JS和JQUERY常见函数封装方式
- [bzoj1741]穿越小行星群