字符编码+文件

字符编码简介

字符编码只针对文本文件(音频、视频、图片都不可以)

一开始是美国人发明的数字与英文的对应关系,叫ASCII码     (1bytes也就是8bit表示英文)

记忆:A-Z   对应  65-90        a-z 对应  97-120

后面中国使用计算机,发明GBK码,韩国发明Euc_kr,日本发明shift_JIS,但是不同码表翻译会出现乱码

最后天下一统,使用unicode万国码  (所有的字符都是2bytes起步存储     会浪费空间和IO时间)

                                 utf8:万国码的转换版本,内存使用unicode,硬盘使用utf8

字符编码的实际应用

编码(将人类能够读懂的字符编码成计算机能够直接读懂的字符) encode

解码(将计算机能够直接读懂的字符解码成人类能够读懂的字符)     decode

复制代码
s1 = '事已至此 何不一搏'
#编码    encode
print(s1.encode('gbk'))#  括号里面是编码的类型
#b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab'

   """
    字符串前面如果加了字母b 表示该数据类型为 bytes类型
        bytes类型可以看成是二进制(无特殊含义)
    """



# 解码    decode

res =b'\xca\xc2\xd2\xd1\xd6\xc1\xb4\xcb \xba\xce\xb2\xbb\xd2\xbb\xb2\xab'
print(res.decode('gbk'))
复制代码

python解释器层面(了解即可)
python2解释器默认的编码是ASCII码(如果在python2中直接写中文看不懂)
1.文件头:必须写在文件的最上方 告诉解释器使用指定的编码
# coding:utf8
# -*- coding:utf8 -*- 美化写法
2.字符前缀:在使用python2解释器的环境下定义字符串习惯在前面加u
name = u'你好啊'
python3解释器默认的编码是utf8(如果是python3则不用管)

文件操作简介(文件:操作系统暴露给用户可以直接操作硬盘的快捷方式)

打开、编辑、保存、关闭文件

方法一:(不常用)

f1 = open()  #如果没有
f1.close()

open(r'a.txt')  # 相对路径  只适用于同一层级的文件
open(r'D:\py1\day09\a.txt')  # 绝对路径(以后写路径为了防止特殊符号 直接加r)
用方法一打开,需要自己输入close进行关闭

方法二:(推荐使用)

with open() as f:
这种相当于f = open(),进行了赋值,后面用完不需要手动关闭,直接with内部给变成close关闭

文件的读写模式

r     read(只读不写)  

w      write(只写不读)

a       append(只在尾部追加模式)  

复制代码
 r模式
#路径不存在:直接报错
with open(r'b.txt', 'r', encoding='utf8') as f1:   #(路径地址,模式,使用的对应码)
     # pass  (推荐)补全语法结构 本身没有任何功能
     # ...  (不推荐)补全语法结构 本身没有任何功能

 路径存在:正常打开文件并等待内容读取
with open(r'a.txt', 'r', encoding='utf8') as f1:
    # print(f1.read())  # 一次性读取文件内所有的内容
    f1.write('python是最牛逼的语言!!!')  # 报错  只读不写
"""
复制代码
复制代码
 w模式
 路径不存在:自动创建文件
with open(r'b.txt', 'w', encoding='utf8') as f1:

 路径存在:先清空文件内容 之后再写入数据  #使用时候小心,否则把之前的文档都清除了
with open(r'a.txt', 'w', encoding='utf8') as f1:
    f1.write('你们是我见过的最优秀一批学生1\n')  # 写入文件内容
    f1.write('你们是我见过的最优秀一批学生2\r')  # 写入文件内容
    f1.write('你们是我见过的最优秀一批学生3\n')  # 写入文件内容
    print(f1.read())  #不可读
"""
换行  最早的时候:\r\n
为了节省空间支持一个字符 根据操作系统的不同可能有所区别
    \n 、 \r
"""
复制代码
复制代码
a模式(append)
路径不存在:自动创建文件
 with open(r'c.txt', 'a', encoding='utf8') as f1:

路径存在:不会清空文件内容 而是在文件末尾等待新内容的添加
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(保存) 
复制代码

 

posted @   半糖+奶茶  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示