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()

      截取,是一种写操作

      

  • 相关阅读:
    Key-Value Memory Network
    Deep Mask Memory Network with Semantic Dependency and Context Moment for Aspect Level Sentiment Clas
    Deep Memory Network在Aspect Based Sentiment方向上的应用
    Deep Memory Network 深度记忆网络
    Self Attention 自注意力机制
    Attention基本公式及其变种
    *端策略优化算法(PPO)
    Policy Gradient 算法
    一本通 农场派对
    A
  • 原文地址:https://www.cnblogs.com/jennifer224/p/12374272.html
Copyright © 2011-2022 走看看