今日内容
- 编码与解码以及字符编码的应用
- 文件基本操作的流程
- 文件的操作默认
- 操作文件的方法
编码与解码
编码
用通俗易懂的话来说就是把人能看懂的语言转为计算机能看懂的语言
例:
字符 >>>>>> unicode 或 unicode >>>>>>> 其他编码
# 编码 encode
s = '时不待我'
print(s.encode('gbk'))
# 输出结果 b'\xca\xb1\xb2\xbb\xb4\xfd\xce\xd2'
解码
用通俗易懂的话来说就是把计算机能看懂的语言转为能看懂人的语言
例:
unicode >>>>>> 字符 或 其他编码 >>>>>> unicode
# 解码
res = b'\xca\xb1\xb2\xbb\xb4\xfd\xce\xd2'
print(res.decode('gbk')) # 时不待我
# b 表示该数据为bytes类型 bytes可以看成是二进制
乱码
就是解码和编码的字符编码表不是同一种 eg:
s = '时不待我'
s1 = s.s.encode('gbk')
print(s1) # 编码
s2 = s1.decode('euc_kr')
print(s2) # 解码,但是乱码
s3 = s1.decode('gbk') # 解码正确
python解释器层面
python2解释器默认的编码是ASCII码
1.文件头:必须写在文件的最上方 告诉解释器使用指定的编码
# coding:utf8
# -*- coding:utf8 -*- 美化写法
2.字符前缀:在使用python2解释器的环境下定义字符串习惯在前面加u
name = u'你好啊'
python3解释器默认的编码是utf8
文件基本操作流程
文件操作简介
# 什么是文件?
操作系统暴露给用户可以直接操作硬盘的快捷方式
# 代码操作文件的流程
1.打开文件、创建文件
2.编辑文件内容
3.保存文件内容
4.关闭文件
# 基本语法结构
# 第一种
f = open()
f.close()
# 文件打开需要手动关闭
# 第二种
with open() as f:
pass
# 文件打开运行完后会自动关闭
# 1.使用关键字打开
'''写路径为了防止特殊符号,直接加r'''
# 相对路径:可以理解为同级目录下:
# 绝对路径:直接写文件的地址 eg: D:\...\...\..
open(r'1.txt')
open(r'D:\User\Python\1.txt')
res = open(r'1.txt', 'r', encoding='utf8')
# 模式
open(文件的路径,文件的操作模式,文件的编码)
1.文件的路径是必须要写的
2.文件的操作模式、文件的编码有时候不用写
# print(res.read()) # 读取文件内容
# res.close() # 关闭文件
'''上述代码都需要在执行完添加close(),close()容易忘记'''
with open(r'1.txt','r',encoding='gbk') as f:
print(f.read())
文件的读写模式
r read 只读模式:只能读不能写
w write 只写模式:只能写不能读
a append 只追加模式:在文件末尾添加内容
# r模式
# 路径不存在:直接报错
# with open(r'b.txt', 'r', encoding='utf8') as f1:
# # pass (推荐)补全语法结构 本身没有任何功能
# # ... (不推荐)补全语法结构 本身没有任何功能
# pass
# 路径存在:正常打开文件并等待内容读取
with open(r'a.txt', 'r', encoding='utf8') as f1:
# print(f1.read()) # 一次性读取文件内所有的内容
f1.write('python是最牛逼的语言!!!') # 报错
"""
able在英语中大部分情况下表示的是 具备...的能力
readable 具备读的能力
writable 具备写的能力
...
"""
# w模式
# 路径不存在:自动创建文件
# with open(r'b.txt', 'w', encoding='utf8') as f1:
# pass (推荐)补全语法结构 本身没有任何功能
# ... (不推荐)补全语法结构 本身没有任何功能
# pass
# 路径存在:先清空文件内容 之后再写入数据
with open(r'a.txt', 'w', encoding='utf8') as f1:
f1.write('你们是我见过的最优秀一批学生1\n') # 写入文件内
f1.write('你们是我见过的最优秀一批学生2\r') # 写入文件内容
f1.write('你们是我见过的最优秀一批学生3\n') # 写入文件内容
with open(r'1.txt', 'r', encoding='utf8') as f1:
print(f1.read())
"""
换行 最早的时候:\r\n
为了节省空间支持一个字符 根据操作系统的不同可能有所区别
\n 、 \r
"""
# a模式
# 路径不存在:自动创建文件
# with open(r'c.txt', 'a', encoding='utf8') as f1:
# pass
# 路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加
# with open(r'a.txt', 'a', encoding='utf8') as f1:
# f1.write('哈哈哈哈或或或或或')
# 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() # 可以将列表中多个元素写入文件
writable() # 判断文件是否可写
flush() # 相当于主动按了ctrl+s(保存)