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的更多相关文章

  1. Day1 Python基础学习

    一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...

  2. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  3. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  4. Python 基础学习 总结篇

    Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...

  5. (一)python基础学习

    根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...

  6. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  7. Python基础学习二

    Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...

  8. Python基础学习一

    Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...

  9. Python基础学习五

    Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...

  10. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

随机推荐

  1. JS 实现下拉框去重

    JS 实现下拉框去重 学习内容: 需求 总结: 学习内容: 需求 用 JS 下拉框去重 实现代码 <html> <head> <meta http-equiv=" ...

  2. js原生的Ajax

    js原生的Ajax其实就是围绕浏览器内内置的Ajax引擎对象进行学习的,要使用js原 生的Ajax完成异步操作,有如下几个步骤: 1)创建Ajax引擎对象 2)为Ajax引擎对象绑定监听(监听服务器已 ...

  3. Vulnhub 之 Earth

    靶机地址:https://www.vulnhub.com/entry/the-planets-earth,755/ Kali IP:192.168.56.104 下载OVA文件后,直接通过Virtua ...

  4. caioj 1031: [视频]递归1(全排列)【DFS】【全排列】

    题目大意:先给一个正整数 n( 1 < = n < = 10 ),输出1到n的所有全排列. 题解:这道题目我们可以用递归来实现,递归在图论中又称为"深度优先搜索"(De ...

  5. Java类型转换详解

    Java类型转换详解 最近有同学问:自动类型转换老是记不住,到底是大转小,还是小转大 其实这个不用死记硬背,很好理解,我们拿 int 和 short 来举例: int 是 4 字节,也就是 32 bi ...

  6. Jenkins+gitlab手动部署

    环境: Jenkins:172.16.88.221 (安装Jenkins和git命令) gitlab:172.16.88.221 (安装gitlab) 远程部署机器:172.16.88.220 (安装 ...

  7. 测试开发【Mock平台】04实战:前后端项目初始化与登录鉴权实现

    [Mock平台]为系列测试开发教程,从0到1编码带你一步步使用Spring Boot 和 Antd React 框架完成搭建一个测试工具平台,希望作为一个实战项目能为你的测试开发学习有帮助. 一.后端 ...

  8. Spring 源码(3)Spring BeanFactory 是怎么创建的?

    Spring创建 BeanFactory 的方式 按照Bean的配置方式手动创建可以分为两种: 使用XMl配置的Bean 这种方式使用xml配置文件配置Bean的信息并且设置扫描的路径,扫描到的包可以 ...

  9. JS_简单的效果-鼠标移动、点击、定位元素、修改颜色等

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  10. 【ACM程序设计】求最小生成树 Kuskual算法

    Kuskual算法 流程 1 将图G看做一个森林,每个顶点为一棵独立的树 2 将所有的边加入集合S,即一开始S = E( 并查集) 3 从S中拿出一条最短的边(u,v),如果(u,v)不在同一棵树内, ...