随笔- 63  文章- 0  评论- 0  阅读- 5285 

字符编码的的实际应用

1.编码与解码

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

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

复制代码
s1 = '你搞什么飞机'
    # 编码    encode
    # print(s1.encode('gbk'))
    """
    字符串前面如果加了字母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'))
    """
    基于网络传输数据 数据都必须是二进制格式
        所以肯定涉及到编码与解码
    """
复制代码

 

2.如何解决乱码问题

  数据当初以什么编码编的就用什么编码解即可

 res1 = s1.encode('gbk')
    print(res1)  # 编码
    res2 = res1.decode('euc_kr')
    print(res2)  # 乱码
    res3 = res1.decode('gbk')
    print(res3)  # 正常显示

 

3.python解释器层面

  python2解释器默认的编码是ASCII码

    1.文件头:必须写在文件的最上方 告诉解释器使用指定的编码  



            # coding:utf8
            # -*- coding:utf8 -*-  美化写法
        
 

    2.字符前缀:在使用python2解释器的环境下定义字符串习惯在前面加u name = u'你好啊' python3解释器默认的编码是utf8

文件操作简介

什么是文件

  操作系统暴露给用户可以直接操作硬盘的快捷方式

代码操作文件的流程

  1.打开文件、创建文件

  2.编辑文件内容

  3.保存文件内容

  4.关闭文件

基本语法结构

  结构1(了解即可):

f1 = open()

f1.close()

 

  结构2(推荐使用):

with open() as f

 

  1.使用关键字打开文件

   '''写路径为了防止特殊符号,直接加r'''

open(r'1.txt')  # 相对路径(即自己相对与目标位置)
open(r'D:\pythonProject1\1.txt')  #绝对路径(文件在硬盘上真正存在的路径)
res = open (r'1.txt','r',encoding = 'utf8')

      '''

  open(文件的路径,文件的操作模式,文件的编码)

    1.文件的路径是必须要写的

    2.文件的操作模式、文件的编码有时候不用写

   '''

print(res.read())  # 读取文件内容

res.close()  # 关闭文件

  '''上述操作open都需要执行close,而close这一行很容易被遗忘'''

#with 上下文管理
with open(r'1.txt','r',encoding='utf8') as f: #f = open()
    data = f.read()
print(data)

  

文件的读写模式

r  read    只读模式:只能读不能写

w  write  只写模式:只能写不能读

a  append 只追加模式:在文件末尾添加内容

r模式

路径不存在:直接报错

with open(r'2.txt', 'r', encoding='utf8') as f1:
    pass

 

 

 

 pass  (推荐使用)补全语法结构 本身没有任何功能

  ...   (不推荐)补全语法结构 本身没有任何功能

路径存在:正常打开文件并等待内容读取

with open(r'1.txt', 'r', encoding='utf8') as f1:
    #print(f1.read()) # 一次性读取文件所有的内容
    f1.write('jhdgfjhvs') #报错  可读不可写

 

 

 

w模式

路径不存在:自动创建文件

路径存在:先清空文件内容 之后再写入数据

with open(r'1.txt', 'w', encoding='utf8') as f1:
    f1.write('jhdgfjhvs\n')
    f1.write('jhdgfjhfsa\n')
    f1.write('jhdgfjhasfsaf\n')

 

 

 

 

 

 a模式

路径不存在:自动创建文件

with open(r'3.txt','a',encoding='utf8') as f1:
    pass

路径存在:不会清空文件内容,而是在文件末尾等待新内容的添加

with open(r'1.txt','a',encoding='utf8') as f1:
    f1.write('没那本事学开发')

 

 

 

 

 

 文件的操作模式

  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()  # 可以将列表多个元素写入文件

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

flush()  # 相当于Ctrl + s ,保存

 

 posted on   鳗鱼的春天  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示