Python基础篇(8)---字符编码和文件操作

本章内容

    •字符编码

    •文件的操作简介

    •文件的读写模式

    •文件的操作模式

    •文件的内置方法

字符编码


人类在与计算机沟通交流,用的都是人类能读懂的字符,而计算机只能识别二进制数 所以由人类的字符到计算机中的能够识别的二进制数,需要经历一个过程,这个过程就是字符编码。

字符编码中的编码指的是翻译或者转换的意思,即将人能理解的字符翻译成计算机能识别的数字。

1.编码和解码

编码:将人类能够读懂的字符编码成计算机能够直接读懂的字符。
解码:将计算机能够直接读懂的字符解码成人类能够读懂的字符。

# 编码 encode
a = '有志者事竟成'
print(a.encode('gbk'))
# 输出 b'\xd3\xd0\xd6\xbe\xd5\xdf\xca\xc2\xbe\xb9\xb3\xc9'
"""
    字符串前面如果加了字母b 表示该数据类型为 bytes类型
        bytes类型可以看成是二进制
"""

# 解码 decode
res =b'\xd3\xd0\xd6\xbe\xd5\xdf\xca\xc2\xbe\xb9\xb3\xc9
print(res.decode('gbk'))
# 输出  有志者事竟成
"""
    基于网络传输数据 数据都必须是二进制格式
        所以肯定涉及到编码与解码
"""

2.解决乱码问题

# 数据当初以什么编码编的就以什么编码解即可
    res1 = s1.encode('gbk')
    print(res1)  # 编码
    res2 = res1.decode('euc_kr')
    print(res2)  # 乱码
    res3 = res1.decode('gbk')
    print(res3)  # 正常显示

3.python解释器层面

# python2.X内部使用的编码默认是ASCII
           # 文件头
            coding:utf8
                 -*- coding:utf8 -*-  美化写法
# 在python2中定义字符串前面要加一个小u
             s = u''
# python3.X默认使用utf8 

文件的操作简介


1.什么是文件?   

文件其实是操作系统暴露给用户操作硬盘的快捷方式。

2.代码操作文件的流程

    1.打开文件、创建文件
    2.编辑文件内容
    3.保存文件内容
    4.关闭文件
"""
文件路径:相对路径与绝对路径
路径中出现了字母与斜杠的组合产生了特殊含义如何取消
在路径字符串前面加一个r
r'D:\python\a.txt'
"""

#1.使用关键字打开文件
open(r'a.txt')  # 相对路径
open(r'D:\py1\day09\a.txt')  # 绝对路径
res = open(r'a.txt', 'r', encoding='utf8')
# 2.读取文件内容
print(res.read())
# 3 关闭文件
res.close()

"""上述操作open完最后都需要执行close 而close这一行很任意被遗忘"""
    # with上下文管理
    with open(r'a.txt', 'r', encoding='utf8') as f:  # f = open()
        data = f.read()
    print(data)

文件的读写模式



r read 只读模式:只能读不能写 w write 只写模式:只能写不能读 a append 只追加模式:在文件末尾添加内容
r模式
r模式 只能看不能改  路径不存在会直接报错
# 路径存在
with open(r'a.txt', 'r', encoding='utf8') as f:
    # print(f.read())  # 读取文件内所有的内容
      f.write('啊啊啊啊 啊啊啊')  # 报错
"""
able在英语中大部分情况下表示的是 具备...的能力
readable    具备读的能力
writable    具备写的能力
"""
w模式
# w模式 只能写不能看 路径不存在则自动创建文件
# 路径存在:
with open(r'a.txt', 'w', encoding='utf8') as f1:
    f1.write('第一行文本\n')  # 写入文件内容
    f1.write('第二杠文本\r')  # 写入文件内容
    f1.write('第三行文本\n')  # 写入文件内容
    print(f1.read())
"""
w模式需要注意的是写入数据,先清空文件内容 之后再写入数据
为了节省空间支持一个字符 根据操作系统的不同可能有所区别 \n 、 \r """

  a模式

# a模式和w模式差不多,区别在于a模式是在末尾添加文本且不会清空原数据
# 路径不存在:自动创建文件
# 路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加
with open(r'a.txt', 'a', encoding='utf8') as f:
        f.write('鹅鹅鹅饿')
        print(f.read())

文件的操作模式


t模式

t就是文本模式 是默认的模式r,w,a。t被省略了,完整的写的话应该是'rt'、'wt'、'at'。
注意事项:
    1.该模式只能操作文本文件
    2.该模式必须要指定encoding参数
    3.该模式读写都是以字符串为最小单位  

b模式

b模式是二进制模式 可以操作任意类型的文件,rb,wb,ab 他们的b不能省略
注意事项:
        1.该模式可以操作任意类型的文件
        2.该模式不需要指定encoding参数
        3.该模式读写都是以bytes类型为最小单位

 

文件的内置方法


 之前我们学习了基本数据类型的内置方法,文件也是有内置方法的。

read()  # 一次性读取文件内容
        # 1.执行完之后光标在文件末尾 继续读取没有内容
        # 2.当文件内容特别大的时候 容易造成内存溢出(满了)
readline()    # 一次只读一行内容
readlines()   # 结果是一个列表 里面的各个元素是文件的一行行内容
readable()    # 判断当前文件是否可读
write()       # 写入文件内容(字符串或者bytes类型)
writelines()  # 可以将列表中多个元素写入文件
writable()    # 判断文件是否可写
flush()       # 相当于主动按了ctrl+s(保存)  
'''
文件还支持for循环 :
一行行读取文件内容(推荐使用)  内存中同一时刻只会有一行内容
'''

 

posted @ 2022-03-14 20:11  早安_1207  阅读(124)  评论(0)    收藏  举报
返回顶端