• 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()
    
    #输出结果如下
    """
    秦时明月汉
    """
  • 相关阅读:
    第十九节,使用RNN实现一个退位减法器
    深度学习系列经典博客收藏
    第十八节,TensorFlow中使用批量归一化(BN)
    第十七节,深度学习模型的训练技巧-优化卷积核,多通道卷积
    第十六节,使用函数封装库tf.contrib.layers
    第十五节,利用反卷积技术复原卷积网络各层图像
    第十四节,TensorFlow中的反卷积,反池化操作以及gradients的使用
    第十三节,使用带有全局平均池化层的CNN对CIFAR10数据集分类
    第十二节,TensorFlow读取数据的几种方法以及队列的使用
    在hadoop集群添加了slave节点的方法
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/12425211.html
Copyright © 2020-2023  润新知