python入门(六)二次编码与文件操作

二次编码

  1. # 密码本:
    # ascii  -- 没有中文
    # gbk    -- 英文 8b(位) 1B(字节) 中文 16b 2B
    # unicode -- 英文16b 2B  中文32b 4B
    # utf-8 --   英文8b 1B  欧洲16b 2B  亚洲24b 3B
    
    name="你好"
    s1=name.encode("utf-8")#编码
    s2=name.encode("gbk")#编码
    s2=s1.decode("utf-8")#用什么编码 就用什么解码
    

3.14 文件操作

  1. 读、覆盖写、追加(r、w、a)

    • 读操作(r):

    • f=open("哈哈",mode="r",encoding="utf-8")#open是打开:引号下填写文件路径 我这里用的是相对路径,逗号隔开,然后写操作方式 r 是读的意思, 然后写编码方式,我这里写"utf-8" 
      print(f.read())#读取全部,选择read()
      print(f.readline())#读取一行,选择readline()
      print(f.readlines())#一行一行读取,存放在列表中
      f.close()#文件操作完成,然后进行关闭
      
      #解决大文件:
      for i in f:
          print(i)#本质上是一行行的读取
      #注意:文件读取在哪,光标就显示在哪
      
    • f 可写成任意变量等,它被称作:文件句柄,文件操作符,或者文件操作对象等。 open 是Python调用的操作系统(windows,linux,等)的功能,而windows的默认编码方式为gbk,linux默认编码方式为utf-8,所以你的文件用什么编码保存的,就用什么方法打开,一般都是用utf-8。 mode为打开方式:常见的有r,w,a,r+,w+,a+.rb,wb,ab,等,默认不写是r。 流程就是打开文件,产生一个文件句柄,对文件句柄进行相应操作,关闭文件。

    • 相对路径与绝对路径

    • f=open("哈哈",mode="r",encoding="utf-8")#同一个文件夹下面的文件,直接写文件名就可以。
      open('C:\\Users\\Meet')#绝对路径:从根目录下开始一直到文件名
      
      #../返回 上一层
      
      #我们在使用绝对路径的时候因为有\这样程序是不能识别的,解决方法:
      open('C:\Users\Meet')  #这样程序是不识别的
      #路径转义://
      解决方法一:
      open('C:\\Users\\Meet') #这样就成功的将\进行转义   两个\\代表一个\
      
      解决方法二:
      open(r'C:\Users\Meet') #这样相比上边的还要省事,在字符串的前面加个小r也是转义的意思  推荐使用这种
      
    • 覆盖写操作(w):

    • w分为两步:1、先清空文件 2、填入文件
      f=open("haha",mode="w",encoding="utf-8")
      f.write("你好好")#写的内容要用引号引起来;在写文件的时候我们要养成一个写完文件就刷新的习惯. 刷新flush()
      #repr 显示数据原生态
      f.flush()
      f.close()
      #当使用w模式下,在打开文件的时候就会把文件所有内容清空,然后操作
      #注意点:如果文件不存在使用w模式会创建文件,文件存在w模式是覆盖写,在打开文件时会把文件中所有的内容清空
      
    • 追加操作(a):

    • f=open("哈哈",mode="a",encoding="utf-8")#无论光标在什么位置,都是在文件的末尾写入
      f.write("年后")#默认是是有自动换行的,需要手动加 取消换行
      f.close()
      
  2. r+、w+、a+(读写:先读后写 、清空写读、追加写读)

    r+:先读后写
    
    # 错误的操作 (坑)
     f = open("萝莉小姐姐电话号","r+",encoding="utf-8")
     f.write("常鑫你太美")
     print(f.read())
    
    
    # 正确的操作:
     f = open("萝莉小姐姐电话号","r+",encoding="utf-8")
     print(f.read())
     f.write("常鑫你太美")
        
     w+:清空写读
    
     f = open("萝莉小姐姐电话号","w+",encoding="utf-8")
     f.write("常鑫你太美")
     print(f.tell())
      f.seek(15)         
     print(f.tell())
     print(f.read())
    
    a+:追加写读
    
     f = open("萝莉小姐姐电话号","a+",encoding="utf-8")
     f.write("常鑫你太美")
     print(f.tell())   # 字节数
     print(f.seek(0,0))  # 0将光标移动到文件的头部
     print(f.read())
    
  3. 其他操作

    tell #查看光标--返回的是字节数
    seek #移动光标
    seek(0,0)#移动到文件得头部
    seek(0,1)#当前位置
    seek(0,2)#移动到文件末尾
    seek(3)#按照字节进行移动(按照编码集)
    
    f.read(3)#要看当前模式如果是 r w a模式则是读取得字符 如果是r+ w+ a+ 读取得则是字节(按照编码集)
    
    #文件修改
     f = open("萝莉小姐姐电话号","r",encoding="gbk")
     s = f.read()
     s1 = s.replace("你太美","吃煎饼")
    
     f1 = open("萝莉小姐姐电话号","w",encoding="gbk")
     f1.write(s1)
    
     with 关键字 open("萝莉小姐姐电话号","r",encoding="gbk") as f:
       文件操作的具体内容
    
    
     w,a 检测有文件就操作,没文件就创建
     
    #文件修改名称
     import os
     os.rename("萝莉小姐姐电话号","萝莉小姐姐电话号.bak")
     os.rename("萝莉小姐姐电话号.txt","萝莉小姐姐电话号")
    
     with open("萝莉小姐姐电话号","r",encoding="gbk")as f:
         pass # 缩进里操作文件
     print(f.read())  # 文件及已经关闭了
    
posted @ 2019-08-26 21:17  __张达达  Views(126)  Comments(0Edit  收藏  举报