python的字符编码系统和文件操作

 

项目改进

'''
l = [11,22,33,22,11,22,66,55,77,99]
        对列表元素进行去重
        拔高:去重之后保持原来的顺序(不要惯性思维)    
'''
 
l = [11,22,33,22,11,22,66,55,77,99]
list1=[]
for num in l:
    # 如果元素在llist1列表中不存在
    if num not in list1:
        # 将元素插入列表
        list1.append(num)
print(list1)  # 输出为[11, 22, 33, 66, 55, 77, 99]

字符编码

电脑只识别低电平和高电平状态,人为的把低电平定义为0、高电平为1这也是二进制

现今人类的数字和字符之间存在对应关系

字符编码发展史

1.一家独大

  美国最先发明了电脑,为了计算机能识别英语发明了:

  ASCII码

    内部记录了英文与数字的对应关系

 

2.群雄逐鹿

  中国:GBK码

    内部记录英文、中文与数字的对应关系

  韩国:Euc_kr码

    内部记录英文、韩文与数字的对应关系 

  日本:shift_JIS码

    内部记录英文、日文与数字的对应关系

 

3.统一

  unicode码(万国码)

    内部记录各个国家与数字的对应关系

  utf8(万国码优化版)

    目前默认使用的编码

'''
所以当数据接收为乱码时,可以选这更改文本的字符编码即可
'''

 

编码与解码

  • 编码

    通过编码本把字符编程为计算机可识别的二进制数据

'''
encode()
    将字符转化为二进制
    语法: 变量名.encode('字符编码')
'''
num ='你好'
# 输出为b'\xe4\xbd\xa0\xe5\xa5\xbd',这位utf8编码
print(num.encode('utf8'))

 

  • 解码

    通过解码本把计算机可识别的二进制数据

'''
decode()
    将二进制转化为编码
    语法: 变量名.decode('字符编码')
'''
num =b'\xe4\xbd\xa0\xe5\xa5\xbd'
# 输出为'你好'
print(num.decode('utf8'))
  • 补充

  用什么字符编码进行编码的结果,只能用该字符编码解码

文件操作

  • 文件路径

相对路径:需要一个参考物才可以,例如:隔壁,在前面......

绝对路径:不需要有参考物,例如:GPS

  • 转义字符

\n:换行符,功能为空行   

 

 

 \t:制表符,功能为空格

 

 

 源字符r可以取消转义

  • 推荐用法

with open(文件路劲,读写模式,字符编码)  as 变量名

  • 不推荐用法

变量名= open(文件路径,读写模式,字符编码)

命令

变量名.close

  • 补充
占位符pass
with open(...,...,...)as f:
        # 无实际操作,用于完整代码
        pass

 

 

读写模式

'''   
 r     只读模式
  文件路径不存在无法读取文件,会报错
  文件路径存在,可以打开文件开始读
      开始读文件时,光标在开头,读完时光标在结尾
'''
    with open(r'aaa.txt','r',encoding='utf8') as f:
            print(f.read())  # 一次性读取文件内容
'''
    w    只写模式
        文件路径不存在会自动创建
        文件路径存在,会清空文件再开始写
'''
    with open(r'aaa.txt','w',encoding='utf8') as f:
            f.write('文件内容')
'''
    a     只追加模式
        文件路径不存在会自动创建
        文件路径存在,光标会移动到末尾再开始写
'''
    with open(r'aaa.txt','a',encoding='utf8') as f:
            f.write('文件内容')

补充:读取优化
    with open(r'aaa.txt','r',encoding='utf8') as f:
            # 逐行输出文件内容,避免内存空间不够使用
            for num in f:
                print(num)

操作模式

  • t模式

    文本模式(为上述三种模式的默认模式)

     rt,wt,at

    1.该模式只能操作文本文件

    2.该模式下需要有encoding字符编码

    3.读写都以字符串为单位

    语法和书写格式与上述相同

  • b模式

    二进制模式,没有字符编码

       rb,wb,ab

    1.该模式可以操作任意类型文件

    2.该模式下不需要指定encoding参数

    3.读写都是以bytes(二进制)为单位

# 写文件
with open(r'文件名.txt','wb') as f:
    f.write()

#图片拷贝
#将图片的二进制码存入变量
with open(r'图片名.jpg','rb') as f:
        data = f.read()
#将图片拷贝为新建图片中
with open(r'新图片名.jpg','wb') as f:
        f.write(data)

#拼接
with open(r'文件名.txt','ab') as f:
        f.write()
'''
如果在文件中插入代码,图片形式无法输出,但图片内存会增加
'''

返回目录

posted @ 2021-08-16 15:42  微纯册  阅读(77)  评论(0编辑  收藏  举报