zoukankan      html  css  js  c++  java
  • Python学习(八)——文件操作:读、写

    open()函数

    打开文件

    1 f = open("歌词", encoding = "utf-8")
    2 data = f.read()
    3 print(data)
    4 f.close()
    5 # 112
    6 # 23445
    7 # 123355
    8 # 153454451515

    另一种方式,不需自己close()

    1 with open("a.txt","w") as f:
    2     f.write('jgsgj')
    3     #jgsgj

    同时开两个

    1 with open("a.txt","w") as f1, 
    2 open("b.txt","w") as f2:
    3     f1.write('jgsgj')
    4     #a.txt  jgsgj
    5     f2.write('jgsgj')
    6     #b.txt  jgsgj

    读取文件中真正的换行符

    1 f = open("test22","r",encoding = "utf8",newline =""  )
    2 print(f.readlines())
    3 #['11111
    ', 'wwerqr
    ', '134tw']

    只读 r

    .readable()

      判断是否可读

    .readline()

      每多写一次多读一行

     1 f = open("歌词", "r",encoding = "utf-8")
     2 #限制为只读: r
     3 print(f.readable())
     4 # True
     5 print(f.readline())
     6 #112
     7 print(f.readline())
     8 #112
     9 #
    10 # 23445

    注意:read()是读取全部,则再readline()是空的

    .readlines()

    把所有内容按行读取出来,打印成列表

    1 f = open("歌词", "r",encoding = "utf-8")
    2 data = f.readlines()
    3 print(data)
    4 # ['112
    ', '23445
    ', '123355
    ', '153454451515']

    只写 w

      重建新文档,写模式

    .writable()

      判断是否可写

    .write()

      写入

    1 f= open("","w",encoding = "utf8")
    2 f.write("12432
    ")
    3 f.write("wewjqwlg")
    4 f.write("qwnegq")
    5 # 12432
    6 # wewjqwlgqwnegq

    .writelines()

      写入

    1 f= open("","w",encoding = "utf8")
    2 f.writelines(["wengng
    ","wqengng
    ","weq
    "])
    3 f.write("aaqwlg
    ")
    4 f.write("aaegq")
    5 # wengng
    6 # wqengng
    7 # weq
    8 # aaqwlg
    9 # aaegq

    注意:文件内容只能是字符串,只能写字符串

    只追加 a

    1 f= open("","a",encoding = "utf8")
    2 f.writelines(["写在最后一行
    "])
    3 # aaegq
    4 # 写在最后一行

    其他模式:

      r+ :读写

        在原文件的最上面写

      w+ :写读

      x+ :写读

      a+ :写读

     b的模式:

      rb 或 r+b

      以二进制的方式操作文件,不能指定编码

    1 f = open("test11.py","rb",encoding = "utf8")
    2 #Wrong 因为已经是二进制的方式编码了

      可以设置解码

     1 f = open("test11","rb")
     2 data = f.read()
     3 #"字符串”——encode——>bytes
     4 #bytes——decode——>"字符串"
     5 print(data)
     6 #b'234
    qre
    1011'
     7 print(data.decode("utf8"))
     8 # 234
     9 # qre
    10 # 1011

    注意: 代表换行

      wb 或 w+b

    1 f = open("test22","wb")
    2 f.write(b'11111
    ')  #以二进制方式写入,,仅ASCII字符可以
    3 f.write(bytes("2222",encoding = "utf8")) #转成二进制,指定编码写入
    4 f.write("".encode("utf8"))
    5 # 11111
    6 # 2222杨

      xb 或 x+b

      ab 或 a+b

      会直接在最后一行后面写

    1 f = open("test22","ab")
    2 f.write("lalal".encode("utf8"))
    3 # 11111
    4 # 2222杨lalal

    文件的其他操作方式

    .closed

      判断文件是否是关闭状态

    1 print(f.closed)
    2 # False

    .encoding 

      显示文件的编码类型

    1 f = open("test22")
    2 print(f.encoding)
    3 # cp936

    cp936 gbk

    .flush()   

      刷新

    .tell() 

      显示当前光标所在位置(以字节为单位)

    1 f = open("test.txt","r",encoding = "utf8")
    2 print(f.tell())
    3 # 0
    4 f.readline()
    5 print(f.tell())
    6 # 8

    .readline()

      读一行,但是不打印

    .seek() 

      用来控制光标的移动,以字节为单位,默认从0开始。

      .seek(a,1) 以相对位置移动a字节,1就代表相对位置移动

      .seek(-a,2)  倒着移动a字节

      

    .read()

      读取光标的位置,以字符为单位

      读取日志的最后一行内容:

     1 f = open("test.txt","rb")
     2 for i in f:
     3     char = - 15
     4     while True:
     5         f.seek(char,2)
     6         date = f.readlines()
     7         if len(date) > 1:
     8             print("文件最后一行是%s" %(date[-1].decode("utf8")))
     9             break
    10         else:
    11             char *= 2

     .truncate()

      截取,是一种写操作

      

  • 相关阅读:
    最小生成数kruskal算法和prim算法
    图的表示及遍历
    mysql忘记root用户密码重置密码的方式
    dwr2.0版本的demo
    web.xml中不同版本的servlet头以及版本控制
    初学jboss
    Filter学习总结,顺便提及点servlet3.0异步filter和异步监听
    监听器
    问题发现和解决
    linux学习
  • 原文地址:https://www.cnblogs.com/jennifer224/p/12374272.html
Copyright © 2011-2022 走看看