• python 文件相关知识


    • 字符编码相关

      • 什么是字符编码
      • 字符编码的类型
      • 字符编码的使用
      • python2和python里字符编码的区别
    • 文件的相关

      • 文件的基础操作
      • 打开文件的模式

    字符编码

    • 什么是字符编码
      在计算机里只识别二进制,为了方便人类的理解,出现了ASCII等编码格式,方便人们阅读理解。

    • 字符编码的类型

      • ASCII编码
        在计算机发展的初期没有考虑到计算机的极速发展,所以考虑到英文的支持使用了ASCII编码,在ASCII理一个bytes代表一个字符,1bytes=8bit,8bit可以表示0-2**81种变化,即可以表示256个字符
      • GBK等编码
        为了满足其他国家,各个国家开始定制了自己的编码,日本把日文编到Shift_JIS里,韩国吧韩文编到了Euc-kr里,而中国把汉子编到了gbk里,在GBK:2Bytes代表一个字符
      • Unicode--->utf-8
        因为在各国都有自己的标准,他们互相并不支持,所以在多语言混合的文本中,就会显示出乱码,为了支持各个国家的混合文本,而产生了unicode,在unicode统一用2Bytes代表一个字符,2**16-1=65535,可代表6万多个字符,因而号称兼容万国语言,听起来挺不错的但是聪明的读者应该发现了对于英文字符如果用2Bytes存的话会造成大量的存储空间浪费,于是产生了UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes
      • unicode和utf-8你用谁?
        所有的程序,最终都要加载到内存,程序保存到硬盘不同的国家用不同的编码格式,但是到了内存中为了兼容万国(计算机可以运行任何国家程序的原因)统一用unicode,在unicode和utf-8的选择中选择unicode做内存固定使用,是因为节省计算,虽然浪费了空间。但在网络传输中需要数据稳定高效的传输,于是都转成了utf-8格式
    • 字符编码的使用 image

      • 乱码的产生
        文件从内存写进磁盘的操作称为存文件
        文件从硬盘读进内存的操作称为读文件

      • 在存文件的过程中你使用什么编码格式存的,它就在硬盘里以什么编码格式写,而当你在文件中写入日文的时候,你用gbk格式保存的话,它会因为找不到对应的关系而无法保存成功,这样的保存是没有办法在利用的。

      • 读文件时导致的乱码
        当你用gbk打开shift-JIS的编码文件时,会因为找不到适合的对应关系,而现实乱码,这时候你调整。

    • python2与python3的区别

      • 在python2中,str编码后的结果是bytes,unicode字符编码的结果是str/bytes,在python2中默认使用的编码格式是ASCII。
      • 在python3种默认的编码就是unicode,无需加u,字符也会用unicode形式存进新的内存空间中。

    文件相关

      • 文件的相关操作
         1 f = open('a.txt','r+',encoding='utf-8')   # 在这行代码中,第一个f是文件句柄,方便你操作文件,open用来调用系统中提供的接口用来操作文件,a.txt是文件的相对路径,如果文件不在当前路径会报错,如果需要打开绝对路径下的文件在windows下记得转义路径,r+表示读写的模式打开文件,encoding表示打开文件时候用什么格式。
         2 f.read() # 读取文件的全部内容,这里需要注意的是如果打开的文件过大,会导致系统崩溃的
         3 f.reiadline()  #读取文件一行内容,以列表形式显示出来
         4 f.readlines()  #读取文件全部内容并以列表形式显示
         5 f.closed()  #判断文件是否关闭
         6 f.name()    #查看文件名
         7 f.encoding()    #查看文件编码
         8 f.readable()    #查看文件是否可读
         9 f.writable()    #查看文件是否可写
        10 f.write('123')  #写入操作,一次写一行,读取写入的时候都是在操作字符串。
        11 f.seek()    #移动光标到指定位置,#seek单位是字节。可选参数0从开头开始移动,1当前位置,2末尾
        12 f.tell()    #告诉你当前光标的位置
        13 f.truncate()    #截断,写操作
        14 f.close()   #关闭文件,很重要,不关闭的话会造成内存的浪费。
        15 
        16 #打开文件的另一种做法
        17 with open('a.txt','r',encoding='utf-8') as read_f   #可打开多个文件,会自动帮你关闭文件
        18 
        19 #小案例,修改文件内容
        20 import os
        21 with open('a.txt','r',encoding='utf-8') as read_f,
        22      open('.a.txt.swap','w',encoding='utf-8') as write_f:
        23      for line in read_f:
        24         if 'alex' in line:
        25             line =line.replace('lao','LAOWANG')
        26         wite_f.write(line)
        27 os.remove('a.txt')
        28 os.rename('.a.txt.swp','a.txt')
        View Code
      • 打开文件的模式
    • r:只读模式打开,不能修改文件
    • w:写的模式打开会覆盖原文件f,不能读文件
    • a:追加操作
    • r+:读写操作
    • rb:对二进制格式的文件操作
    • wb:对二进制文件写操
  • 相关阅读:
    遥远的国度(D12 树链剖分)
    Codechef DGCD Dynamic GCD(D12 树上GCD)
    html总结
    数据库大总结
    html笔记
    Linux常用快捷键
    进程
    多进程
    进程介绍
    网络并发
  • 原文地址:https://www.cnblogs.com/songcheng/p/6995599.html
Copyright © 2020-2023  润新知