字符编码与文件操作

1. 字符编码

  1. 字符编码的介绍

    字符编码是针对于文本文件的

  2. 字符编码的发展史

    1. 一家独大

计算机一开始是由美国人发明出来的,所以当发明字符编码时,没有考虑到中文,韩文,日文等语言,只有考虑到英文字符与数字对应的关系

      此编码为ASCII码:英文字符与数字对应的关系

        一个英文字母对应的是一个字节(bytes)

        需要记住的ASCII码为:a-z:97-122   A-Z:65-90

 

    2.  群雄割据

复制代码
之后,其他国家也相继开始使用计算机 面临了相同问题,没有对应国家的语言的字符编码,所以陆续开始发明字符编码
    GBK: 记录了中文,英文与数字的对应关系
        1bytes(8bit)来表示英文
        2bytes(16bit)来表示中文
        但是大部分中文都是3个bytes
    
    Euc_kr:记录了英文、韩文与数字的对应关系
    shift_JIS:记录了英文、日文与数字的对应关系

因为有多个字符编码的出现,就会有个问题,当我们以GBK的字符编码进行书写程序时,发给其他国家,其他国家并不以GBK的字符编码进行翻译,会以自己国家的字符编码进行翻译,那么就会发生翻译乱码的现象   
复制代码

 

    3. 天下一统

因为上面的情况出现,后续推出了万国码(unicode),任何国家都可以进行使用
    unicode规定所有字符都是2bytes起步,这样会浪费空间,IO时间

    而我们现在最常用的是utf-8是万国码的翻译版本
    
    而我们电脑中硬盘使用的是utf8,而内存使用的是unicde

 

  3. 字符编码实际应用

复制代码
编码: encode
        将人类能够读懂的字符编码成计算机能够直接读懂的字符

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

        解码时,字符串前面如果加了字母b 表示该数据类型为 bytes类型
        bytes类型可以看成是二进制

 基于网络传输数据 数据都必须是二进制格式,所以肯定涉及到编码与解码
复制代码

 

 

2. 文件操作简介

复制代码
1. 文件的定义
    操作系统暴露给用户可以直接操作硬盘的快捷方式
 
2. 代码操作文件的流程
    1.打开文件、创建文件
    2.编辑文件内容
    3.保存文件内容
    4.关闭文件
 
3. 基本语法结构
    结构1:
        f1 = open('文件路径', 文件操作, encoding=)
        f1.close()
    结构2:
        with open('文件路径', 文件操作, encoding=) as f:
            pass
        
    1.使用关键字打开文件
    以后写路径为了防止特殊符号 直接加r'''
    open(r'a.txt')  此路径为相对路径
    open(r'D:\py1\day09\a.txt')  此路径为绝对路径)

    open(文件的路径,文件的操作模式,文件的编码)
        1.文件的路径是必须要写的
        2.文件的操作模式、文件的编码有时候不用写(一会儿讲)
    
    res.read()  # 读取文件内容
    res.close()  # 关闭文件

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

 

3. 文件的读写模式

复制代码
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())  # 一次性读取文件内所有的内容

able在英语中大部分情况下表示的是 具备...的能力
    readable    具备读的能力
    writable    具备写的能力


    w模式
    路径不存在:自动创建文件
    with open(r'b.txt', 'w', encoding='utf8') as f1:
        pass  (推荐)补全语法结构 本身没有任何功能

    路径存在:先清空文件内容 之后再写入数据
with open(r'a.txt', 'w', encoding='utf8') as f1:
    f1.write('你们是我见过的最优秀一批学生1\n')  # 写入文件内容
    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() 
复制代码

 

4. 文件的操作模式

复制代码
t模式        
    文本模式 是默认的模式
        r    rt
        w    wt
        a    at
    1.该模式只能操作文本文件
    2.该模式必须要指定encoding参数
    3.该模式读写都是以字符串为最小单位
    
b模式    
    二进制模式  可以操作任意类型的文件
        rb  不能省略b
        wb  不能省略b
        ab  不能省略b
    1.该模式可以操作任意类型的文件
    2.该模式不需要指定encoding参数
    3.该模式读写都是以bytes类型为最小单位
复制代码

 

5. 文件内置方法

复制代码
# 一次性读取文件内容
    1.执行完之后光标在文件末尾 继续读取没有内容
    2.当文件内容特别大的时候 容易造成内存溢出(满了)
read()  

# 一次只读一行内容
readline()
  
# 结果是一个列表 里面的各个元素是文件的一行行内容
readlines()  

# 判断当前文件是否可读
readable()  

# 写入文件内容(字符串或者bytes类型)
write()  

# 可以将列表中多个元素写入文件
writelines() 

# 判断文件是否可写 
writable()  

# 相当于主动按了ctrl+s(保存)  
flush()  
复制代码

 

posted @   thrombus  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示