zoukankan      html  css  js  c++  java
  • python notice5 文件操作

    一、文件操作介绍

      使用python来读写文件时非常简单的操作,使用open()函数打开一个文件,获取到文件句柄,然后就可以通过文件句柄进行相关操作。(需根据打开文件方式进行相应操作)

      打开文件方式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b.(不带b的是对文本文件操作;带b的是对非文本文件操作,如音乐、视频等),默认使用的是r模式。

    二、只读操作(r,rb)

      1.r模式:

        f = open("文件名",mode = "r",encoding = "utf-8")  #获取句柄

        content = f.read()

        print(content)

        f.close()  #关闭句柄

        注:encoding表示编码集,根据文件的实际保存编码进行获取数据。更多使用的是utf-8(pytharm)

        注:这里的文件名也包括文件的路径,推荐使用相对路径。

        注:当句柄使用结束后,一定记得关闭句柄。

      2.rb模式

        f = open("文件名",mode = "rb")  #获取句柄,rb读取数据类型是bytes类型,此时不能选择encoding编码集。

        content = f.read()

        print(content)

        f.close()  #关闭句柄,结果为文件内容的二进制码。

      3.补充    

        f.read(n)  r模式读取n个字符(rb模式读取n个字节),下次再读取时,从当前位置继续往后读取。

        f.readline()  一次读取一行数据,在readline()结尾,每次读取出来的数据结尾都会有一个 ,所以,可根据需要用strip()方法去掉 或者空格。

        f.readlines()  将每行形成一个原色,放到一个列表中。文件一次性读完,不推荐使用。  4.循环读取:

        f = open("文件名",mode = "r",encoding = "utf-8")

        for line in f:

          print(line.strip())

    三、写模式(w,wb)

      写的时候如果没有文件,则会创建一个文件;如果存在,则会把原来内容清空,再写入新内容。

      1.w模式:

        f = open("文件名",mode = "w",encoding = "utf-8")

        f.write("写的内容")

        f.flush()  #写完之后需要刷新

        f.close()

      2.wb模式:

        wb模式下,不用指定打开文件的编码,但在写文件时必须将字符串转化成utf-8的bytes数据。

        f = open("文件名",mode = "wb")

        f.write("写的内容".encode("utf-8"))

        f.flush()  #写完之后需要刷新

        f.close()

    四、追加(a,ab)

      追加模式,写入的内容会追加在文件的结尾。

      f = open("文件名",mode = "a",encoding = "utf-8")

      f.write("写的内容")

      f.flush()  #写完之后需要刷新

      f.close()

    五、读写模式(r+,r+b)

      对于读写模式,必须时先读。因为默认光标是在开头,准备读取的,读完之后才进行写入(写在了结尾)。若先写的话,写入的内容会覆盖掉原位置的内容,然后再从当前位置往后读取。

      f = open("文件名",mode = "r+",encoding = "utf-8")

      content = f.read()

      f.write("写入的内容")

      print(content)

      f.flush()

      f.close()

    六、写读模式(w+,w+b)

      先将所有的内容清空,然后写入,最后读取。但是读取的内容是空的。

      在w+模式下,先读是读取不到数据的,再写也是将原来的内容先清空,然后写入。

      f = open("文件名",mode = "w+",encoding = "utf-8")

      f.write("写入的内容")

      content = f.read()

      print(content)

      f.flush()

      f.close()

    七、追加读(a+)

      a+模式下,不论先读还是后读,都是读取不到数据的。

      f = open("文件名",mode = "a+",encoding = "utf-8")

      f.write("写入的内容")

      content = f.read()

      print(content)

      f.flush()

      f.close()

    八、其他相关操作

      1.seek(n)光标移动到n位置,移动单位是byte,一个中文字符为3个字节。

      移动到开头:seek(0)

      移动到结尾:seek(0,2),seek的第二个参数表示从哪个位置进行偏移,默认是0,表示开头;1表示当前位置;2表示结尾。

      2.tell(),获取当前光标所在位置。

        print(f.tell())  #打印光标当前位置

    九、文件修改

      首先将文件中的内容读取到内存中,将信息修改完毕,然后将源文件删除,将新文件的名字改成老文件的名字。

      注意:在读取文件时最好一行一行的读取。

      注意:需要调用os模块

      import os

      with open("小娃娃", mode="r", encoding="utf-8") as f1,    #太长时用""连接换行,直接敲回车即可

      open("小娃娃_new", mode="w", encoding="UTF-8") as f2:  #用with时就不需要关闭句柄了。

      for line in f1:

        new_line = line.replace("⼤白梨", "冰糖葫芦")

        f2.write(new_line)

      os.remove("小娃娃") # 删除源⽂文件

      os.rename("小娃娃_new", "小娃娃") # 重命名新⽂文件

      

  • 相关阅读:
    6章-项目进度管理-day5
    常规正则表达式
    axios删除接口
    elk
    英语笔记
    升级打怪
    用computed实现watch的保持子组件与父组件值同步
    vertical-align不生效的问题
    css居右
    使用maven创建spring工程出现配置文件打不开/不存在的错误
  • 原文地址:https://www.cnblogs.com/xiaolu-fan/p/11187349.html
Copyright © 2011-2022 走看看