python基础学习9
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(保存)
python基础学习9的更多相关文章
- Day1 Python基础学习
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- (一)python基础学习
根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...
- python基础学习(起步)
目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Python基础学习一
Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...
- Python基础学习五
Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...
- Python基础学习四
Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...
随机推荐
- java重载时自动转换咋回事?举例说明
当一个重载的方法被调用时,Java在调用方法的参数和方法的自变量之间寻找匹配. 但是,这种匹配并不总是精确的.只有在找不到精确匹配时,Java的自动转换才会起作用. (如果定义了test(int ...
- 使用React实现一个TodoList案例
1.效果图: 2.项目源码 3.源码 TodoList.js import React, { Component, Fragment } from 'react'; import TodoItem f ...
- fetch和axios区别,摘自Stack Overflow网站答案
fetch 请求let url = 'https://someurl.com'; let options = { method: 'POST', mode: 'cors', headers: { 'A ...
- Ubuntu安装docker(摘自官网,自用)
在 Ubuntu 上安装 Docker 引擎(按照标红顺序执行命令) 预计阅读时间:11分钟 适用于 Linux 的 Docker 桌面 Docker Desktop 可帮助您在 Mac 和 Wind ...
- The 18th Zhejiang Provincial Collegiate Programming Contest
The 18th Zhejiang Provincial Collegiate Programming Contest GYM链接 https://codeforces.com/gym/103055 ...
- 安装支付宝小程序的 mini-ali-ui
1.打开文件的根目录 2.使用npm init -y初始化 3. npm install mini-ali-ui --save 安装 4.在json文件里面定义 例如使用loading加载中的组件 完 ...
- 面渣逆袭:Spring三十五问,四万字+五十图详解
大家好,我是老三啊,面渣逆袭 继续,这节我们来搞定另一个面试必问知识点--Spring. 有人说,"Java程序员都是Spring程序员",老三不太赞成这个观点,但是这也可以看出S ...
- SSM框架中返回的是字符串还是页面跳转的问题
如果你在控制器前的注解是@RestController的话,将返回controller方法指定的String值,@RestController注解相当于@ResponseBody和@Controlle ...
- PTA刷题笔记
PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑 ...
- 一文读懂 Kubernetes 容器网络
点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 在Kubernetes中要保证容器之间网络互通,网络至关 ...