python基础学习

内容概要


  • 字符编码的简介
  • 字符编码的发展史
  • 字符编码的实际应用
  • 文件操作简介
  • 文件读写模式
  • 文件操作模式
  • 文件操作方法

内容详情


字符编码的简介

# 字符编码主要研究的对象是文本文件(图片、视频、音频除外)
文本编辑器读取文件内容的流程
阶段1、启动一个文件编辑器(文本编辑器如nodepad++,pycharm,word)
阶段2、文件编辑器会将文件内容从硬盘读入内存
阶段3、文本编辑器会将刚刚读入内存中的内容显示到屏幕上
python解释器执行文件的流程
阶段1、启动python解释器,此时就相当于启动了一个文本编辑器
阶段2、python解释器相当于文本编辑器,从硬盘上将test.py的内容读入到内存中
阶段3、python解释器解释执行刚刚读入的内存的内容,开始识别python语法
计算机底层存储数据的原理
"""只认识0101010的二进制数字"""

字符编码的发展史

# 字符编码表:内部就是存储了数字与人类字符的对应关系

1.美国
定义一个数字与英文字符的对应关系>>>:字符编码表
ASCII码:只记录了英文字符与数字的对应关系
1bytes存储英文字符
"""
A-Z:65-90
a-z:97-122
"""
2.中国
自己发明一套编码表>>>:数字与中文、英文字符的对应关系
GBK码:记录了英文、中文与数字的对应关系
1bytes存储英文字符
2bytes存储中文字符 如果不够则使用3bytes\4bytes
韩国
韩国棒子也发明了他们的编码表>>>:数字与韩文、英文字符对应的关系
Euc_kr:记录了英文、韩文与数字的对应关系
日本
小日本也发明了他们的编码表>>>:数字与日文、英文字符对应的关系
shift_JIS:记录了英文、日文与数字的对应关系
...
"""
群雄割据的阶段会产生一个非常奇怪的现象>>>:乱码
其实就是编码本使用混乱导致文本展示错误
"""
3.unicode # 万国码
"""内部记录了所有国家的字符与数字的对应关系"""
所有的字符统一采用最少2bytes存储
现在的计算机可以输出所有国家的字符 内存使用的是unicode编码
unicode会浪费存储空间和IO时间 所以又开发了一个编码
utf8 # unicode transformation format
优化了unicode存储数据的容量
1bytes存储英文字符
3bytes存储中文字符
# 结论:内存中的编码不需要考虑 值考虑硬盘上的即可 utf8

字符编码的实际应用

# 编码与解码
encode 编码 将人类能够读懂的字符编码成计算机能够读懂的字符 print(str.encode('gbk'))
decode 解码 将计算机能够读懂的字符解码成人类能够读懂的字符 print(str.decode('gbk'))
'''字符串前面如果加了字母b 表示该数据类型为bytes类型 bytes类型可以看成是二进制'''
'''基于网络的数据传输 数据都必须是二进制格式 所以肯定涉及到编码与解码''' # 如何解决乱码
数据当初以什么编码编的就以什么码解即可 # python解释器层面
python2解释器默认的编码是ASCII码
1.文件头:必须写在文件的最上方 告诉解释器使用指定的编码
coding:utf8 美化写法:-*-coding:utf8-*-
2.字符前缀:在使用python2解释器的环境下定义字符串习惯在前面加u
name = u'你好啊'
python3解释器默认的编码是utf8

文件操作简介

'''文件即操作系统暴露给用户可以直接操作硬盘的快捷方式'''

# 代码操作文件的流程
1.打开文件、创建文件
2.编辑文件内容
3.保存文件内容
4.关闭文件 ## 基本语法结构
结构1
f1 = open()
f1.close()
res = open(r'路径', 'r', encoding='utf8') 使用关键字打开文件
'''以后写路径为了防止特殊符号 直接加r'''
'''open(文件的路径,文件的操作模式,文件的编码) 文件的路径是必须要写的'''
print(res.read()) 读取文件内容
res.close() 关闭文件
"""上述操作open完最后都需要执行close 而close这一行很任意被遗忘"""
结构2
with open() as f:
pass
with open(r'路径', 'r', encoding='utf8') as f: with上下文管理
data = f.read()
print(data) '''pass (推荐)补全语法结构 本身没有任何功能'''
'''... (不推荐)补全语法结构 本身没有任何功能'''

文件的读写模式

r模式 r read 只读模式:只能读不能写
with open(r'路径', 'r', encoding='utf8') as f1:
print(f1.read()) # 一次性读取文件内所有的内容
f1.write('python是最牛逼的语言!!!') # 报错
路径不存在:直接报错
路径存在:正常打开文件并等待内容读取 w模式 w write 只写模式:只能写不能读
with open(r'路径', 'w', encoding='utf8') as f1:
f1.write('文本内容\n') # 写入文件内容
print(f1.read()) # 报错
"""
换行 最早的时候:\r\n
为了节省空间支持一个字符 根据操作系统的不同可能有所区别
\n 、 \r
"""
路径不存在:自动创建文件
路径存在:先清空文件内容 之后再写入数据 a模式 a append 只追加模式:在文件末尾添加内容
with open(r'路径', 'a', encoding='utf8') as f1:
f1.write('文本内容\n') # 写入文件内容
print(f1.read()) # 报错
路径不存在:自动创建文件
路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加

文件的操作模式

t模式
文本模式 是默认的模式
r rt
w wt
a at
1.该模式只能操作文本文件
2.该模式必须要指定encoding参数
3.该模式读写都是以字符串为最小单位
b模式
二进制模式 可以操作任意类型的文件
rb 不能省略b
wb 不能省略b
ab 不能省略b
1.该模式可以操作任意类型的文件
2.该模式不需要指定encoding参数
3.该模式读写都是以bytes类型为最小单位

文件内置方法

read()  一次性读取文件内容
1.执行完之后光标在文件末尾 继续读取没有内容
2.当文件内容特别大的时候 容易造成内存溢出(满了)
readline() 一次只读一行内容
readlines() 结果是一个列表 里面的各个元素是文件的一行行内容
readable() 判断当前文件是否可读
支持for循环 一行行读取文件内容(推荐使用) 内存中同一时刻只会有一行内容
write 写入文件内容(字符串或者bytes类型)
writelines() 可以将列表中多个元素写入文件
writeable() 判断文件是否可写
flush() 相当于主动按了ctrl+s(保存)

最新文章

  1. 【javascript杂谈】你所不知道的replace函数
  2. uml大战需求分析阅读笔记01
  3. mysql metadata lock(三)
  4. The shortest problem
  5. eclipse 好用的插件安装地址集合【持续更新】
  6. [转] restrict关键字用法
  7. nyoj组合数
  8. Delphi调用C++导出的QT类
  9. python编程快速上手之第10章实践项目参考答案
  10. 一 Unicode和UTF-8的异同
  11. Jmeter接口测试+压力测试
  12. nginx+keeplived+tomcat
  13. 使用C#实现实体类和XML相互转换
  14. latex排版(CTeX winEdit输出“系统找不到指定的文件”的终极解决办法)
  15. Spring Cloud(四):服务容错保护 Hystrix【Finchley 版】
  16. Android 编程 AMapLocationClientOption 类中的 setMockEnable (高德地图 com.amap.api.location.AMapLocationClientOption 中的类)
  17. Django 中间件实现用户认证与IP频率限制
  18. Windows Azure Platform 性能监视器(转载)
  19. 编写高质量代码改善C#程序的157个建议——建议59:不要在不恰当的场合下引发异常
  20. javascript中的循环引用对象处理

热门文章

  1. vue报错解决方案
  2. SLF4J 报错解决:No SLF4J providers were found
  3. python---二维数组的查找
  4. 二进制免安装方式,配置mysql
  5. Unity中制作血条2.0
  6. Django-----cookie&session
  7. vscode无法运行和调试使用了部分stl库的程序(无法定位程序输入点__gxx_personality_v0的一个解决方法)
  8. 【代理是什么?】nginx快速入门+反向代理hexo个人博客
  9. 终于有人把云计算、大数据和 AI 讲明白了【深度好文】
  10. Shell 脚本编程最佳实践