首页 Python正文

【笔记】Python第六课(字符编码/文件操作)

從出茳湖 Python 2019-07-05 51 0

day07.png

Python第六课(字符编码/文件操作)    >>>转到思维导图>>>转到博客园

字符编码

# 字符编码针对的是文字。
# 字符编码只跟文本文件有关。
# 文本编辑器的输入和输出是两个过程。
# 字符编码表就是字符与数字的对应关系

ASCII码表 用八位二进制表示一个英文字符

GBK 用2Bytes表示一个中文字符,还是用1Bytes表示一个英文字母。最多能表示65535个字符

Unicode万国码 统一用2Bytes表示所有的字符
    1.浪费存储空间
    2.IO次数增加,程序运行效率降低(致命)
    
# 当内存中的unicode编码格式数据存到硬盘的时候,会按照utf-8编码

# 会将unicode的英文字符由原来的2Bytes变成1Bytes
# 会将unicode中文字符由原来的2Bytes变成3Bytes
# 现在的计算机内存都是unicode,硬盘都是utf-8

unicode的两个特点
    1.用户在输入的时候,无论输什么字符都能够兼容万国字符
    2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系
    
# 数据由内存保存到硬盘
    内存中的unicode格式二进制数字 >>>编码(encode)>>>utf-8格式的二进制数据
# 硬盘中的数据由硬盘读到内存
    硬盘中的utf-8格式的二进制数据>>>解码(decode)>>>内存中unicode格式的二进制数据
    
# 保证不乱码在于文本文件以什么编码编的就以什么编码解

# python2将py文件按照文本文件读入解释器中默认使用ASCII码
# python3将py文件按照文本文件读入解释器中默认使用utf-8

# 文件头 # coding:utf-8 因为所有的编码都支持英文字符,所以文件头才能够正常生效
# python3中字符串默认就是unicode编码格式的二进制数
# pycharm终端用的是utf-8格式,windows终端采用的是gbk格式。

encode() # 将unicode编码成可以存储和传输的utf-8的二进制数据
# bytes类型  字节串类型  你就把它当成二进制数据即可
decode()  # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据

x = '上'
res1 = x.encode('gbk')  # 将unicode编码成可以存储和传输的utf-8的二进制数据
print(res1)  # b'\xe4\xb8\x8a'
# bytes类型  字节串类型  你就把它当成二进制数据即可
res2 = res1.decode('gbk')  # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
print(res2)


# 补充:
# 你a他
# 1Bytes|1Bytes|1Bytes|1Bytes|1Bytes|1Bytes|1Bytes
# 1+7bit|1+7bit|1+7bit|1+7bit|1+7bit|1+7bit|1+7bit

文件处理


# 什么是文件?
# 操作系统提供给用户操作复杂硬件(硬盘)的简易的接口。

# 为什么操作文件?
# 人或者应用程序需要永久的保存数据。

# 打开文件的模式
    f = open() 
    文件句柄 = open('文件路径', '模式')
    
# 打开文件的模式有(默认为文本模式):
    #文件读写模式
    r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 
    w,只写模式【不可读;不存在则创建;存在则清空内容】 
    a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】
    #文件操作单位
    t 文本文件   t在使用的时候需要指定encoding参数(如果不知道默认是操作系统的默认编码)
        只能和r/w/a连用  默认就是t
    b 二进制  一定不能指定encoding参数
        mode参数 可以不写  不写的话默认是rt
        只能和r/w/a连用 该模式通常用来处理非文本文件
    # encoding参数只在mode位文本模式的情况下才加
    
# 操作文件的方法
    f.read() # 读取所有内容,光标移动到文件末尾
    f.readline() # 读取一行内容,光标移动到第二行首部
    f.readlines() # 读取每一行内容,存放于列表中
    f.write('1111\n222\n') # 针对文本模式的写,需要自己写换行符 
    f.write('1111\n222\n'.encode('utf-8')) # 针对b模式的写,需要自己写换行符 
    f.writelines(['333\n','444\n']) # 文件模式 
    f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) # b模式
    f.readable() # 文件是否可读 
    f.writable() # 文件是否可读 
    f.closed # 文件是否关闭 
        为防止忘记f.close(),推荐使用with关键字来帮我们管理上下文 
    with open('a.txt','w') as f:
    f.encoding # 如果文件打开模式为b,则没有该属性

END


评论

本站会员尊享VIP特权,现在就加入我们吧!登录注册
登录
用户名
密码
注册
用户名
密码
确认密码
邮箱
验证码
找回密码
用户名
邮箱
※ 重置链接将发送到邮箱