ASCII 码表
Bin
(二进制)
|
Oct
(八进制)
|
Dec
(十进制)
|
Hex
(十六进制)
|
缩写/字符
|
解释
|
0000 0000
|
00
|
0
|
0x00
|
NUL(null)
|
空字符
|
0000 0001
|
01
|
1
|
0x01
|
SOH(start of headline)
|
标题开始
|
0000 0010
|
02
|
2
|
0x02
|
STX (start of text)
|
正文开始
|
0000 0011
|
03
|
3
|
0x03
|
ETX (end of text)
|
正文结束
|
0000 0100
|
04
|
4
|
0x04
|
EOT (end of transmission)
|
传输结束
|
0000 0101
|
05
|
5
|
0x05
|
ENQ (enquiry)
|
请求
|
0000 0110
|
06
|
6
|
0x06
|
ACK (acknowledge)
|
收到通知
|
0000 0111
|
07
|
7
|
0x07
|
BEL (bell)
|
响铃
|
0000 1000
|
010
|
8
|
0x08
|
BS (backspace)
|
退格
|
0000 1001
|
011
|
9
|
0x09
|
HT (horizontal tab)
|
水平制表符
|
0000 1010
|
012
|
10
|
0x0A
|
LF (NL line feed, new line)
|
换行键
|
0000 1011
|
013
|
11
|
0x0B
|
VT (vertical tab)
|
垂直制表符
|
0000 1100
|
014
|
12
|
0x0C
|
FF (NP form feed, new page)
|
换页键
|
0000 1101
|
015
|
13
|
0x0D
|
CR (carriage return)
|
回车键
|
0000 1110
|
016
|
14
|
0x0E
|
SO (shift out)
|
不用切换
|
0000 1111
|
017
|
15
|
0x0F
|
SI (shift in)
|
启用切换
|
0001 0000
|
020
|
16
|
0x10
|
DLE (data link escape)
|
数据链路转义
|
0001 0001
|
021
|
17
|
0x11
|
DC1 (device control 1)
|
设备控制1
|
0001 0010
|
022
|
18
|
0x12
|
DC2 (device control 2)
|
设备控制2
|
0001 0011
|
023
|
19
|
0x13
|
DC3 (device control 3)
|
设备控制3
|
0001 0100
|
024
|
20
|
0x14
|
DC4 (device control 4)
|
设备控制4
|
0001 0101
|
025
|
21
|
0x15
|
NAK (negative acknowledge)
|
拒绝接收
|
0001 0110
|
026
|
22
|
0x16
|
SYN (synchronous idle)
|
同步空闲
|
0001 0111
|
027
|
23
|
0x17
|
ETB (end of trans. block)
|
结束传输块
|
0001 1000
|
030
|
24
|
0x18
|
CAN (cancel)
|
取消
|
0001 1001
|
031
|
25
|
0x19
|
EM (end of medium)
|
媒介结束
|
0001 1010
|
032
|
26
|
0x1A
|
SUB (substitute)
|
代替
|
0001 1011
|
033
|
27
|
0x1B
|
ESC (escape)
|
换码(溢出)
|
0001 1100
|
034
|
28
|
0x1C
|
FS (file separator)
|
文件分隔符
|
0001 1101
|
035
|
29
|
0x1D
|
GS (group separator)
|
分组符
|
0001 1110
|
036
|
30
|
0x1E
|
RS (record separator)
|
记录分隔符
|
0001 1111
|
037
|
31
|
0x1F
|
US (unit separator)
|
单元分隔符
|
0010 0000
|
040
|
32
|
0x20
|
(space)
|
空格
|
0010 0001
|
041
|
33
|
0x21
|
!
|
叹号 |
0010 0010
|
042
|
34
|
0x22
|
"
|
双引号 |
0010 0011
|
043
|
35
|
0x23
|
#
|
井号 |
0010 0100
|
044
|
36
|
0x24
|
$
|
美元符 |
0010 0101
|
045
|
37
|
0x25
|
%
|
百分号 |
0010 0110
|
046
|
38
|
0x26
|
&
|
和号 |
0010 0111
|
047
|
39
|
0x27
|
'
|
闭单引号 |
0010 1000
|
050
|
40
|
0x28
|
(
|
开括号
|
0010 1001
|
051
|
41
|
0x29
|
)
|
闭括号
|
0010 1010
|
052
|
42
|
0x2A
|
*
|
星号 |
0010 1011
|
053
|
43
|
0x2B
|
+
|
加号 |
0010 1100
|
054
|
44
|
0x2C
|
,
|
逗号 |
0010 1101
|
055
|
45
|
0x2D
|
-
|
减号/破折号 |
0010 1110
|
056
|
46
|
0x2E
|
.
|
句号 |
0010 1111
|
057
|
47
|
0x2F
|
/
|
斜杠 |
0011 0000
|
060
|
48
|
0x30
|
0
|
字符0 |
0011 0001
|
061
|
49
|
0x31
|
1
|
字符1 |
0011 0010
|
062
|
50
|
0x32
|
2
|
字符2 |
0011 0011
|
063
|
51
|
0x33
|
3
|
字符3 |
0011 0100
|
064
|
52
|
0x34
|
4
|
字符4 |
0011 0101
|
065
|
53
|
0x35
|
5
|
字符5 |
0011 0110
|
066
|
54
|
0x36
|
6
|
字符6 |
0011 0111
|
067
|
55
|
0x37
|
7
|
字符7 |
0011 1000
|
070
|
56
|
0x38
|
8
|
字符8 |
0011 1001
|
071
|
57
|
0x39
|
9
|
字符9 |
0011 1010
|
072
|
58
|
0x3A
|
:
|
冒号 |
0011 1011
|
073
|
59
|
0x3B
|
;
|
分号 |
0011 1100
|
074
|
60
|
0x3C
|
<
|
小于 |
0011 1101
|
075
|
61
|
0x3D
|
=
|
等号 |
0011 1110
|
076
|
62
|
0x3E
|
>
|
大于 |
0011 1111
|
077
|
63
|
0x3F
|
?
|
问号 |
0100 0000
|
0100
|
64
|
0x40
|
@
|
电子邮件符号 |
0100 0001
|
0101
|
65
|
0x41
|
A
|
大写字母A |
0100 0010
|
0102
|
66
|
0x42
|
B
|
大写字母B |
0100 0011
|
0103
|
67
|
0x43
|
C
|
大写字母C |
0100 0100
|
0104
|
68
|
0x44
|
D
|
大写字母D |
0100 0101
|
0105
|
69
|
0x45
|
E
|
大写字母E |
0100 0110
|
0106
|
70
|
0x46
|
F
|
大写字母F |
0100 0111
|
0107
|
71
|
0x47
|
G
|
大写字母G |
0100 1000
|
0110
|
72
|
0x48
|
H
|
大写字母H |
0100 1001
|
0111
|
73
|
0x49
|
I
|
大写字母I |
01001010
|
0112
|
74
|
0x4A
|
J
|
大写字母J |
0100 1011
|
0113
|
75
|
0x4B
|
K
|
大写字母K |
0100 1100
|
0114
|
76
|
0x4C
|
L
|
大写字母L |
0100 1101
|
0115
|
77
|
0x4D
|
M
|
大写字母M |
0100 1110
|
0116
|
78
|
0x4E
|
N
|
大写字母N |
0100 1111
|
0117
|
79
|
0x4F
|
O
|
大写字母O |
0101 0000
|
0120
|
80
|
0x50
|
P
|
大写字母P |
0101 0001
|
0121
|
81
|
0x51
|
Q
|
大写字母Q |
0101 0010
|
0122
|
82
|
0x52
|
R
|
大写字母R |
0101 0011
|
0123
|
83
|
0x53
|
S
|
大写字母S |
0101 0100
|
0124
|
84
|
0x54
|
T
|
大写字母T |
0101 0101
|
0125
|
85
|
0x55
|
U
|
大写字母U |
0101 0110
|
0126
|
86
|
0x56
|
V
|
大写字母V |
0101 0111
|
0127
|
87
|
0x57
|
W
|
大写字母W |
0101 1000
|
0130
|
88
|
0x58
|
X
|
大写字母X |
0101 1001
|
0131
|
89
|
0x59
|
Y
|
大写字母Y |
0101 1010
|
0132
|
90
|
0x5A
|
Z
|
大写字母Z |
0101 1011
|
0133
|
91
|
0x5B
|
[
|
开方括号 |
0101 1100
|
0134
|
92
|
0x5C
|
反斜杠 | |
0101 1101
|
0135
|
93
|
0x5D
|
]
|
闭方括号 |
0101 1110
|
0136
|
94
|
0x5E
|
^
|
脱字符 |
0101 1111
|
0137
|
95
|
0x5F
|
_
|
下划线 |
0110 0000
|
0140
|
96
|
0x60
|
`
|
开单引号 |
0110 0001
|
0141
|
97
|
0x61
|
a
|
小写字母a |
0110 0010
|
0142
|
98
|
0x62
|
b
|
小写字母b |
0110 0011
|
0143
|
99
|
0x63
|
c
|
小写字母c |
0110 0100
|
0144
|
100
|
0x64
|
d
|
小写字母d |
0110 0101
|
0145
|
101
|
0x65
|
e
|
小写字母e |
0110 0110
|
0146
|
102
|
0x66
|
f
|
小写字母f |
0110 0111
|
0147
|
103
|
0x67
|
g
|
小写字母g |
0110 1000
|
0150
|
104
|
0x68
|
h
|
小写字母h |
0110 1001
|
0151
|
105
|
0x69
|
i
|
小写字母i |
0110 1010
|
0152
|
106
|
0x6A
|
j
|
小写字母j |
0110 1011
|
0153
|
107
|
0x6B
|
k
|
小写字母k |
0110 1100
|
0154
|
108
|
0x6C
|
l
|
小写字母l |
0110 1101
|
0155
|
109
|
0x6D
|
m
|
小写字母m |
0110 1110
|
0156
|
110
|
0x6E
|
n
|
小写字母n |
0110 1111
|
0157
|
111
|
0x6F
|
o
|
小写字母o |
0111 0000
|
0160
|
112
|
0x70
|
p
|
小写字母p |
0111 0001
|
0161
|
113
|
0x71
|
q
|
小写字母q |
0111 0010
|
0162
|
114
|
0x72
|
r
|
小写字母r |
0111 0011
|
0163
|
115
|
0x73
|
s
|
小写字母s |
0111 0100
|
0164
|
116
|
0x74
|
t
|
小写字母t |
0111 0101
|
0165
|
117
|
0x75
|
u
|
小写字母u |
0111 0110
|
0166
|
118
|
0x76
|
v
|
小写字母v |
0111 0111
|
0167
|
119
|
0x77
|
w
|
小写字母w |
0111 1000
|
0170
|
120
|
0x78
|
x
|
小写字母x |
0111 1001
|
0171
|
121
|
0x79
|
y
|
小写字母y |
0111 1010
|
0172
|
122
|
0x7A
|
z
|
小写字母z |
0111 1011
|
0173
|
123
|
0x7B
|
{
|
开花括号 |
0111 1100
|
0174
|
124
|
0x7C
|
|
|
垂线 |
0111 1101
|
0175
|
125
|
0x7D
|
}
|
闭花括号 |
0111 1110
|
0176
|
126
|
0x7E
|
~
|
波浪号 |
0111 1111
|
0177
|
127
|
0x7F
|
DEL (delete)
|
删除
|
1 运行程序的三个核心硬件
cpu
内存
硬盘
任何一个程序要想运算,必须先由硬盘加在到内存,然后cocpu去内存存取执行
运行着的应用程序产生的数据 必先存再内存
2 python解释器运行的一个python文件(sss.py) 步骤
1 将pythpn解释器的代码由硬盘读到内存
2 讲xxx.py以普通文本文件形式读到内存
3 python读取文件内容,识别python语法 执行相应操作
ps 普通的文本编辑器与python解释器前两步都一样
字符编字符编码针对的文字那也就意味着这里需要考虑视频文件 音频文件等其他文件吗? 不需要文本编辑器的输入和输出是两个结果
人在操作计算机的时候,输入的是人能够看懂的字符,但是计算机智能识别010101这样的二进制数据,那么
人输入的字符按照某一个东西 >>(字符编码表)>> 变成了二进制数字
字符编码表就是字符与数字的对应关系
a 0
b 1
a 00
b 01
c 11
d 10
ALCII码表 最上方的
用八位二进制表示一个英文字符 所有英文字符+符号最多也就125 左右
0000 0000
1111 1111
GBK
用2个Bytes表示一个中文字符 还是用1个Bytes表示英文字符
0000 0000 0000 0000
1111 1111 1111 1111 最多能表示65535个字符
基于上面的推导步骤,任何一个国家要想让计算机支持本国语言都必须自己创建一个字符编码
日本人 shift_JIS
韩国人 Euc-kr
万国编码表 unicode
统一用2个Bytes表示所有的字符
a 0000 0000 0010 1010
影响
1 浪费内存空间
2 io次数增加,程序运行效率降低(致命)
当内存的中的unicode编码格式数据存到银盘的时候,会按照utf-8编码
utf-8 unicode transfornmation format
会将unicode的英文字符由原来的2Bytes变成1Bytes
会将unicode中文字符由原来的2Bytes变成3Bytes
现在的计算机
内存都是unicode
硬盘都是utf-8
需要掌握
unicode的两个特点(******)
1 用户在输入的时候,无论什么字符都能够兼容万国字符
2 其他国家编码的数据有由硬盘读到能存的时候unicode与其他各个国家的编码都有对应关系
必须掌握(*********)
数据由内存保存到硬盘
1 内存中的unicode格式二进制数字 >>编码(enceode)>> utf-8格式的二进制数据
硬盘中的数据由硬盘读到内存
1 硬盘中的utf-8格式的二进制数据 >>解码(decode)>> 内存中unicode格式的二进制数据
(******)
保证不乱码的关键
文本文件一什么编码编的就以什么编码解
python2
将py文件按照文本文件读入解释器中
默认用ASCII码(因为在开发python2解释器的时候unicode还没有盛行)
指定了文件头的话就用文件头的编码格式存储数据
用python2写代码 中文字符前面要加u
为了就是将oython2(当你不指定文件头的时候,默认使用ASCII存储数据,如果指定文件头,那么就以文件头的格式编码存储数据)
x = u'你好'
-----------------------------------------------------------------------------------------------
python3
默认使用utf-8编码
文件头
# coding: utf-8 冒号后面写什么编码就用什么编码读
1 因为所有的编码都支持英文字符,所以文件头才能够正常生效
# -*- coding: utf-8 -*- 两边的-*- 一点乱用没有 装饰
python3默认是unicode格式
补充
1 pycharm终端用的的utf-8
2 windows终端用的是GBK
-----------------------------------------------------------------------------------------------
总结:
(*************) 这个必须会
x = '上'
res1 = x.encode('gbk') # 将unicode编码成可以存储和传输的utf-8的二进制数据
print(res1) # b'xe4xb8x8a'
# bytes类型 字节串类型 你就把它当成二进制数据即可
res2 = res1.decode('gbk') # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
print(res2)
鸡哥语录:不知道该怎么用 就两个试试 不是encode 就是decode
乱码:存入的字符不能够正常显示 说明他们保存时候和输出编码不一致
单位换算
八位二进制也叫8bit
8bit = 1Bytes
1024Bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
什么是文件
操作系统提供给用户操作复杂硬件(硬盘)的简易的接口
为什么要操作文件
人或者应用程序需要永久的保存数据
如何用
with open(r'E:程序第二周a.txt',encoding='utf-8') as f: # f仅仅十个变量名,你把他看成一个遥控器
print(f)
print(f.read())
文件的操作
文件处理模式
r 只读模式
w 只写模式
a 追加模式
操作文件单位的方式
t 文本文件 t模式在使用的时候需要指定encoding参数 如果不知道默认是操作系统的默认编码
b 二进制 一定不能指定encoding参数
文件打开模式
r 只读模式
w 只写模式
a 追加模式
r模式 打开文件的时候没有找到文件 直接报错 简写只能在同一个文件夹下才行
文件路径可以写相对路径,但是需要注意该文件必须与执行文件在同一层文件下
mode参数可以不写 不写的话默认是rt 只读的文本文件 t不写默认就是t
with open(r'E:程序第二周a.txt',mode='r',encoding='utf-8') as a: # mode 默认不写是rt
print(a.readable()) # 是否可读 True
print(a.writable()) # 是否可写 False
print(a.read()) # 一次性将文件内容全部读出
打开图片
with open(r'E:程序第二周1.jpg',mode='rb',) as a: # mode 默认不写是rt
print(a.readable()) # 是否可读 True
print(a.writable()) # 是否可写 False
print(a.read()) # 一次性将文件内容全部读出
x = '上'
res = x.encode('utf_8') # 将unicode编码成可以存储和传输的utf-8的二进制数据
print(res) # b'xe4xb8x8a' BytesL类型 字节串类型 把它当成二进制数据即可
res1 = res.decode('utf-8') # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制
print(res1) # 上
鸡汤
encode 不行就用 decode
应用程序想要操作计算机硬件,必须通过操作系统来间接的操作
打开一个文件
通过python代码操作文件
r 取消转义
f = open(r'E:程序第二周a.txt') # 向操作系统发送请求 打开某个文件
print(f) # f 是文件对象
print(f.read()) # windows 操作系统默认的编码是gbk
f = open(r'E:程序第二周a.txt',encoding='utf-8')
print(f)
print(f.read())
f.read() # 向操作系统发请求,读取文件内容
f.close() # 告诉操作系统 关闭打开的文件
print(f)
自动上下文操作
with open(r'E:程序第二周a.txt',encoding='utf-8') as f: # f仅仅十个变量名,你把他看成一个遥控器
print(f)
print(f.read())
打开多个文件
with open(r'E:程序第二周a.txt',encoding='utf-8') as f ,
open(r'E:程序第二周a.txt',encoding='utf-8') as f1:
print(f)
print(f.read())
print(f1)
print(f1.read())
r模式打开文件注意
with open(r'E:程序第二周a.txt',mode='r',encoding='utf-8') as a: # mode 默认不写是rt
print(a.readable()) # 是否可读 True
print(a.writable()) # 是否可写 False
print('>>>1')
print(a.read()) # 一次性将文件内容全部读出
print('>>>2')
print(a.read()) # 读完一次之后文件的光标已经在文件末尾了,再读就没有内容了
print(a.readlines()) # 返回的是一个列表 一个一个列表内的元素对应的就是文件的一行行数据
for i in a: # a 可以被for循环 没for循环一次 读一行内容
print(i) # 这个方法可以解决大文件一次性读取占用内存过高的问题
print(a.readline()) # 只读文件一行内容
print(a.readline())
print(a.readline())
print(a.readline())
w模式 w模式一定要慎用,会先清空
1 文件不存在的情况下,自动创建该文件
2 当文件存在的情况下 会将文件内容清空再写入
with open(r'E:程序第二周.txt',mode='w',encoding='utf-8') as a: # mode 默认不写是rt
print(a.readable()) # 是否可读 False
print(a.writable()) # 是否可写 True
print('>>>>') # 一次性将文件内容全部读出
a.write('鸡哥说今天是个翻车的好日子,,,,, ')
a.write('鸡哥说今天是个翻车的好日子,,,,, ')
a.write('鸡哥说今天是个翻车的好日子,,,,, ')
a.write('鸡哥说今天是个翻车的好日子,,,,, ')
l = ['鸡哥说今天是个翻车的好日子 ,''鸡哥说今天是个好日子 ,']
a.writelines(l)
上下等价
for i in l:
a.write(i)
a模式
1 当文件不存在的情况下,自动创建文件
2 当文件存在的情况下 不会清空文件内容,文件的光标会移动到文件最后
with open(r'E:程序第二周c.txt',mode='a',encoding='utf-8') as a: # mode 默认不写是rt
print(a.readable()) # 是否可读 F
print(a.writable()) # 是否可写 T
a.write('真理啊 ')
a.write('真理啊')