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

    一、文件操作

    1.tell()方法返回文件的当前位置,即文件指针当前位置。

    • UTF-8 编码格式,一个中文占3个字符
    • GBK 编码格式,一个中文占2个字符
    #写入前文件内容如下
    """
    秦时明月汉时关
    万里长征人未还
    但使龙城飞将在
    不教胡马度阴山
    """
    
    f = open("music","r",encoding="utf8")
    print(f.tell())
    print(f.read(5))
    print(f.tell())
    f.close()
    
    #打印出结果如下
    """
    0                #初始指针在文件头,也就是位置为0的位置上
    秦时明月汉        #打印出5个汉字
    15               #此时指针位置在15
    """

    2.seek()指针从哪里开始写入

    file.seek(offset[, whence])
    • offset -- 开始的偏移量,也就是代表需要移动偏移的字节数

    • whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
    #seek() 参数 whence 默认为 0
    f = open("music","r",encoding="utf8")
    print(f.read(5))
    f.seek(3)
    print(f.read(2))
    f.close()
    
    #结果如下
    """
    秦时明月汉
    时明
    """
    #seek() 参数 whence 为 1
    #文件内容如下
    """
    秦时明月汉时关
    """
    
    f = open("music","rb")        #读取模式需为 "rb"
    print(f.read(3).decode("utf8"))        #读取出的内容解码为 utf8
    f.seek(3,1)
    print(f.read(3).decode("utf8"))
    f.close()
    
    #结果如下
    """
    秦
    明
    """
    #seek() 参数 whence 为 2
    #文件内容如下
    """
    秦时明月汉时关
    """
    
    f = open("music","rb")      #读取模式需为 "rb"
    print(f.read(3).decode("utf8"))     #打印出的结果为汉字需要解码为 utf8
    f.seek(-9,2)        #指针改成倒数第三个汉字前进行读取
    print(f.read(6).decode("utf8"))     #从指针位置向后读取两个汉字
    f.close()
    
    #结果如下
    """
    秦
    汉时
    """

     3.flush()

    • 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
    • 一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
    import time
    f = open("music","w",encoding="utf8")
    f.write("hello world")      #此时写入的内容在(缓冲区)缓存中,并未写入到磁盘中,需要执行后面的 f.close() 才会将内容从缓存中写入到磁盘中
    f.flush()       #此操作就是提前将缓冲区内的内容写入到磁盘中
    
    time.sleep(10)
    f.close()
    #方案一
    import sys,time
    for i in range(30): #进度条类型
        sys.stdout.write("*")       #此时写入在缓冲区
        sys.stdout.flush()      #通过 flush() 实时刷新
        time.sleep(0.2)
    
    #方案二
    import time
    for i in range(30): #进度条类型
        print("*",end="",flush=True)
        time.sleep(0.2)

    4.truncate()

    • 方法用于截断文件并返回截断的字节长度。
    • 指定长度的话,就从文件的开头开始截断指定长度,其余内容删除;不指定长度的话,就从文件开头开始截断到当前位置,其余内容删除。
    #文件内容如下
    """
    秦时明月汉时关
    万里长征人未还
    但使龙城飞将在
    不教胡马度阴山
    """
    
    #truncate()参数为空时
    f = open("music","r+",encoding="utf8")
    f.truncate()
    print(f.read())
    f.close()
    
    #输出结果如下
    """
    
    """
    
    #truncate()有参数时
    f = open("music","r+",encoding="utf8")
    f.truncate(15)
    print(f.read())
    f.close()
    
    #输出结果如下
    """
    秦时明月汉
    """
  • 相关阅读:
    时尚前沿的图片左右滚动效果-1
    瀑布流效果
    js遮罩层弹出显示效果组件化
    javascript学习笔记(三)
    前端开发技巧
    Pushlet后台推送
    比较抽象的面试题
    技术点
    HTML5特性
    struts2学习笔记(二)
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/12425211.html
Copyright © 2011-2022 走看看