字符编码与文件操作
字符编码与文件操作
1.dubug简单使用
1.先使用鼠标左键在需要调式的代码左边点击一下(会出现一个红点)
2.之后鼠标右键点击debug运行代码
2.字符编码
#只跟文本文件和字符串有关。与视频文件图片文件等无关
#什么是字符编码
由于计算机内部只识别二进制,但是用户在使用计算机的时候却可以看到各式各样的语言字符
字符编码:内部记录了人类字符与数字对应的数据
3.字符编码发展史
1.一家独大
计算机最初是由美国人发明的,美国人为了能够让计算机识别字符
ASCII:里面记录了英文字符与数字的对应关系
'''
所有的英文字符和符号加起来其实不超过127
之所以使用八位是为了后续发现新的语言
'''
#ASCII码对应表;0-48 A-65 a-97
2.群雄割据
中国
为了能够让计算机识别中文,我们需要发明另一套编码表
GBK码;记录了英文中文与数字的对应关系
对于英文还是使用一个字节
对应中文使用两个字节甚至更多字节
日本
为了能够让计算机识别日文,也发明了一套编码
shift_JIS码;记录了日文英文与数字的对应关系
韩国
为了能够让计算机识别韩文,同样需要发明一套编码表
Euc_kr码:记录了韩文英文与数字的对应关系
3.天下一统
为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一
unicode(万国码)
统一使用连个及以上字符与数字的对应关系
'''
大概是unicode依然在内存空间,但将文本文件储存到硬盘的过程中使用utf8进行优化,然后需要将硬盘内的数据取出来的时候同样经过utf8进行处理,最后unicode进行编码
'''
utf8(万国码的优化版本)
将英文还是用一个字节储存
将中文使用的三个字节或者更多字节储存
'''
现在默认使用的编码数utf8
'''
4.字符编码实操
.encode()括号内添加需要编码类型的码
.decode()括号内添加需要解码类型的码
1.如何解决文件乱码的情况
文件当初以什么编码编的,打开的时候就以什么编码解
2.python解释器版本不同带来的编码差异
python2.X内部使用的编码默认是ASCII
#文件头
coding:utf8
#在P2中定义字符串需要在前面加一个小u
#并在代码第一行添加文件头;coding:utf8
"""
自定义文件模板内容
file
settings
Editor
file and code templates
python script
"""
Python3.x中默认使用的是utf8
3.编码与解码
编码
将人类能够读懂的字符串安装安装指定的编码转换成数字
解码
将数字按照指定的编码转换成人类能够读懂的字符
#.encode()编码
l1 = '每天写一点 每天写一点 最后发现就学了一点'
res = l1.encode('utf8')
print(res, type(res))
#得到的值视为二进制数据。type查看到的数据类型为<class 'bytes'>特定的数据类型
#其它编码格式------解码decode-------->unicode格式
#.decode()解码
l1.decode('utf8')
#需要编码完成后才可以解码
文件操作
1.文件定义
1.什么是文件?
文件其实就是操作系统暴露给用户造操作硬盘的快捷方式(接口)
2、代码如何操作文件
关键字open()
三步走
1.利用关键字open()打开文件
2.利用其他方法操作文件
3.关闭文件
'''
文件路径
相对路径与绝对路径
路径中出现了字母与斜杠的组合产生了特殊含义如何取消
在路径字符串前面加上一个r
r'D:\py20\day08\a.txt'
'''
可以在pycharm选择对应的文件点击鼠标右键选择Copy Pach进去选择粘贴的路径
2.文件读写模式
路径前面加上字母r
.read()
.write()括号内可以为打开的文件添加数据
r 只读模式(只能看不能写)
w 只写模式(只能写不能看)
a 只追加模式(追加模式)
'''
补全语法结构,没有实际含义
...
pass
两种方法
'''
with open(r'a.txt','r',encding='uft8') as l1:
print(l1.read())
with open(文件路径,读写模式,字符编码) as 变量名
#witn上下文管理(可以自动close())#open表示操作文件,'a.txt'表示为文件的路径,'r'表示只读模式不能写,读写模式,encoding='utf8'为字符编码类型,l1为变量名。with下面的子代码运行结束会自动运行关闭
r 只读模式(只能看不能写)
路径不存在:直接报错
with open(r'b.txt','r ',encoding='utf8') as f:
pass
路径存在;直接显示文件内部内容
l1 = open('a.txt','r',encoding='utf8')
#open表示操作文件,'a.txt'表示为文件的路径,'r'表示只读模式不能写,读写模式,encoding='utf8'为字符编码类型
print(l1.read())
#resd为阅读。整体为read阅读打开的这个文件
l1.close()
#表示为立刻关闭打开的这个文件
#open(文件路径,读写模式,字符编码)
文件路径与读写模式视必须的
字符编码视可选的(有些模式需要编码)
w 只写模式(只能写不能看)
文件路径不存在,直接创建相应的文件
with open(r'b.txt','w ',encoding='utf8') as f:
pass
文件路径存在会先清空文件内容,在执行写入操作
with open(r'b.txt','w ',encoding='utf8') as f:
f.write('hello')
f.write('hello')
f.write('hello')
#打印出来的都在同一行,如果要变行需要\n
f.write('hello\n')
f.write('hello\n')
f.write('hello\n')
#.write()括号内增加数据就可以把数据添加到目标文件内
a 只追加模式(尾部追加)
with open(r'b.txt','a',encoding='utf8') as f:
f.write('hello\nMr')
f.write('hello\nMr')
f.write('hello\nMr')
#.write()括号内增加数据就可以把数据添加到目标文件内打印出来的都在同一行,如果要变行需要\n,写入的内容会在尾部追加
浙公网安备 33010602011771号