zoukankan      html  css  js  c++  java
  • Python基础(文件操作)

    文件读取:

     1 #文件读取方式一
     2 f=open("a.txt","r+",encoding="utf8")
     3 data=f.read()
     4 print(data)
     5 f.close()
     6 
     7 #文件读取方式二
     8 with open("a.txt","r+",encoding="utf8") as f:
     9     data=f.read()
    10     print(data)

     

    文件写入:

    1 #文件写入方式一
    2 f=open("b.txt","w",encoding="utf8")
    3 f.write("今天天气很好!")
    4 f.close()
    5 
    6 #文件写入方式二
    7 with open("a.txt","r+",encoding="utf8") as f:
    8     data=f.write()
    9     print(data)

    标注**:使用with open() as f 方式读数据时简化了f.close()的步骤

    文件刷新(flush):

    1 with open("c.txt","r+",encoding="utf8") as f:
    2     f.write("今夜难以入睡!")
    3     f.flush()#将写在内存中的内容刷新到硬盘中

    文件tell方法:

      描述:此方法返回该文件中读出的文件/写指针的当前位置。

    1 with open("d.txt","r+",encoding="utf8") as f:
    2     data=f.readline()
    3     print(data)
    4     print(f.tell()) #显示当前光标所在的位置

    文件seek方法:

      描述:seek()用于移动文件读取指针到指定位置。

      格式:file.seek(offset,whence)

        offset:开始的偏移量,也就是代表需要移动偏移的字节数

        whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。whence值为空没设置时会默        认为0。

     1 >>> f=open("aaa.txt","w")     #以只写的形式打开一个叫做aaa.txt的文件
     2 >>> f.write("my name is liuxiang,i am come frome china")   #写入内容
     3 >>> f.close()     #关闭文件
     4 >>> f=open("aaa.txt","r")     #以只读打开文件
     5 >>> f.read()   #读取内容
     6 'my name is liuxiang,i am come frome china'      
     7 >>> f.seek(3,0)      #“0”代表从文件开头开始偏移,偏移3个单位
     8 >>> f.read(5)     #从偏移之后的指针所指的位置(即“n”)开始读取5个字符
     9 'name '
    10 >>> f.tell()     #显示现在指针指在哪个位置(即“i”的位置)
    11 >>> f.readline()       #读取这一行剩下的内容
    12 'is liuxiang,i am come frome china'     
    13 
    14 
    15 
    16 >>> f.seek(0,2)      #“2”代表从末尾算起,“0”代表偏移0个单位
    17 >>> f.read()
    18 ''         #因为是从末尾算起,内容已结束。所以读取内容为空

     

    **seek方法读取日志文件最后一行:

    1 #日志文件
    2 2018/12/23   kelvin   login   登录淘宝
    3 2018/12/25   Alex   buy   购买商品
    4 2018/12/28   kelvin   buy   购买商品
    5 2018/12/29   elvin   login   登录网站
    6 2018/12/29   kelvin   nologin   退出登录
    7 2018/12/31   bob   foot   逛商城
    8 2019/01/01   kelvin   order   下单
    1 with open("日志文件","rb") as f:
    2     offset=-20    #定义一个偏移量用于在第一次倒序移动光标长度
    3     while True:
    4         f.seek(offset,2)   #第一次倒序移动光标,移动长度为20个字节
    5         data=f.readlines()  #读取从移动后的光标到日志结尾的每一行组成一个列表
    6         if len(data)>1:    #如果取出的文件列表行数大于1,则说明肯定取到了最后一行
    7             print(data[-1].decode("utf8"))   #取出列表中的最后一行,即为日志的最后一行
    8             break
    9         offset*=2     #如果取出的文件列表小于等于1,则说明取出的最后一行日志可能不完整,说明偏移量太小,因此扩大偏移量

    遍历文件:

     1 #Author : Kelvin
     2 #Date : 2019/1/4 12:59
     3 
     4 #第一种(不推荐使用,因为会将文件所有内容加载到内存)
     5 f=open("日志文件","r+",encoding="utf8")
     6 for i in f.readlines():
     7     print(i)
     8 
     9 #第二种(推荐使用,只会一行一行读取,不会首先将所有文件内容加载到内存中)
    10 f=open("日志文件","r+",encoding="utf8")
    11 for i in f:
    12     print(i)

     

  • 相关阅读:
    第四章
    第三章
    第二章
    实验5-2: 编制程序,输入m、n(m≥n≥0)后,计算下列表达式的值并输出。 要求将计算阶乘的运算编写作函数fact(n),函数返回值的类型为float
    作业
    多人电费
    单人电费
    圆柱体积
    圆面积
    第七章
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/10219260.html
Copyright © 2011-2022 走看看