zoukankan      html  css  js  c++  java
  • 字符编码与文件处理方式

    1.dict.fromkeys的特性
    # res = {}.fromkeys(['name', 'password', 'age'], []) # 面试
    # print(res) # {'name': [], 'password': []}
    # res['name'].append('jason') # dict.fromkeys的特性 用此方法产生的字典所有的键都只能指定同一个value
    # print(res)

    res2 = {}.fromkeys(['name', 'password', 'age'], 123) # 面试
    print(res2) # {'name': 123, 'password': 123}
    res2['name'].append('jason') # 报错
    print(res2)

    2.字符编码
    字符编码只针对文本文件
    万国码 unicode
    现在的计算机
    内存都是unicode
    硬盘都是utf-8

    unicode的两个特点
    1.用户在输入的时候,无论输什么字符都能够兼容万国字符
    2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系

    数据由内存保存到硬盘
    1.内存中的unicode格式二进制数字 >>>>编码(encode)>>>>> utf-8格式的二进制数据

    硬盘中的数据由硬盘读到内存
    2.硬盘中的utf-8格式的二进制数据 >>>>>解码(decode)>>>>> 内存中unicode格式的二进制数据

    3.处理乱码问题
    八位二进制也叫8bit(******)
    8bit = 1Bytes
    1024Bytes = 1KB
    1024KB = 1MB
    1024MB = 1GB
    1024GB = 1TB
    1024TB = 1PB

    注意:1.pycharm终端用的是utf-8格式
    2.windows终端采用的是gbk

    x = '上'
    res1 = x.encode('utf-8') # 将unicode编码成可以存储和传输的utf-8的二进制数据
    print(res1) # b'xe4xb8x8a' 内存存储数据到硬盘中的数据是unicode码,

    # bytes类型 字节串类型 你就把它当成二进制数据即可
    res2 = res1.decode('utf-8') # 将硬盘中的utf-8格式的二进制数据解码成unicode格式的二进制数据
    print(res2) 上 # 硬盘读取到内存中是utf-8的编码格式

    ###### 的什么编码格式存储的,就用什么编码格式去读取

    4.文件的读写
    """
    文件打开的模式
    r 只读模式 # rb文本 # rt二进制数
    w 只写模式
    a 追加写模式
    操作文件单位的方式
    在 r 模式中
    rt 文本文件 t在使用的时候需要指定encoding参数 如果不知道默认是操作系统的默认编码
    rb 二进制 ###一定不能指定encoding参数
    """
    # mode参数 可以不写 不写的话默认是rt 只读的文本文件 这个t不写默认就是t
    # with open(r'D:Python项目day07a.txt',mode='r',encoding='utf-8') as f:
    # print(f.readable()) # 是否可读
    # print(f.writable()) # 是否可写
    # print(f.read()) # 一次性将文件内容全部读出

    # with open(r'D:Python项目day071.jpeg',mode='rb') as f:
    # print(f.readable()) # 是否可读
    # print(f.writable()) # 是否可写
    # print(f.read()) # 一次性将文件内容全部读出


    # r模式在打开文件的时候 如果文件不存在 直接报错
    # 文件路径可以写相对路径 但是需要注意该文件必须与执行文件在同一层文件下
    # with open(r'a.txt',mode='r',encoding='utf-8') as f:
    # with open(r'a.txt','r',encoding='utf-8') as f1: mode关键字可以不写
    # print(f.readable()) # 是否可读
    # print(f.writable()) # 是否可写
    # print(">>>1:")
    # print(f.read()) # 一次性将文件内容全部读出
    # print('>>>2:')
    # print(f.read()) # 读完一次之后 文件的光标已经在文件末尾了,再读就没有内容了可读
    # print(f.readlines()) # 返回的是一个列表 列表中的一个个元素对应的就是文件的一行行内容
    # for line in f: # f可以被for循环 每for循环依次 读一行内容
    # print(i) # 这个方法 就可以解决大文件一次性读取占用内存过高的问题
    # print(f.readline()) # 只读取文件一行内容
    # print(f.readline())
    # print(f.readline())
    # print(f.readline())


    # w模式:w模式一定要慎用
    # 1.文件不存在的情况下 自动创建该文件
    # 2.当文件存在的情况下 会先清空文件内容再写入
    # with open(r'xxx.txt',mode='w',encoding='utf-8') as f:
    # print(f.readable()) # 是否可读
    # print(f.writable()) # 是否可写
    # f.write('不不不,你没有翻~ ')
    # f.write('不不不,你没有翻~ ')
    # f.write('不不不,你没有翻~ ')
    # f.write('不不不,你没有翻~ ')
    # f.write('不不不,你没有翻~')
    # l = ['不sdffs,sdfs有翻~ ','不sdfsdf不,你sdfsf翻~ ','不sfad不,你没sa翻~ ']
    # f.writelines(l)
    # # 上下等价
    # for i in l:
    # f.write(i)


    # a模式
    # 1.当文件不存在的情况下 自动创建该文件
    # 2.当文件存在的情况下,不清空文件内容, 文件的光标会移动文件的最后
    # with open(r'yyy.txt',mode='a',encoding='utf-8') as f:
    # print(f.readable()) # 是否可读
    # print(f.writable()) # 是否可写
    # f.write('我是小尾巴 ')

  • 相关阅读:
    微信红包限额提升方法
    微信从业人员推荐阅读的100本经典图书
    微信裂变红包
    微信公众平台开发最佳实践(第2版)
    微信公众平台开发(108) 微信摇一摇
    微信支付样例
    微信行业解决方案
    牛逼顿
    微信支付开发(4) 扫码支付模式二
    微信公众平台开发(107) 分享到朋友圈和发送给好友
  • 原文地址:https://www.cnblogs.com/night-rain/p/11149122.html
Copyright © 2011-2022 走看看