zoukankan      html  css  js  c++  java
  • 第六天——文件处理其它操作(五)


    文件处理其它操作

    一.其他相关操作

    1.1 seek()

    seek(n)光标移动到n位置,注意: 移动单位是byte,所有如果是utf-8的中文部分要是3的倍数

    通常我们使用seek都是移动到开头或者结尾

    移动到开头:seek(0,0)

    移动到当前位置:seek(0,1)

    移动到末尾:seek(0,2)

    移动1个字:seek(3) 移动光标是按照字节进行移动

    f = open("小娃娃", mode="r+", encoding="utf-8")
    f.seek(0) # 光标移动到开头
    content = f.read() # 读取内容, 此时光标移动到结尾
    print(content)
    f.seek(0) # 再次将光标移动到开头
    f.seek(0, 2) # 将光标移动到结尾
    content2 = f.read() # 读取内容. 什么都没有
    print(content2)
    f.seek(0) # 移动到开头
    f.write("张国荣") # 写入信息. 此时光标在9 中文3 * 3个 = 9
    f.flush()
    f.close() 
    tell()
    

    1.2 tell()

    使用tell()可以帮我们获取当前光标在什么位置

    f = open("小娃娃", mode="r+", encoding="utf-8")
    f.seek(0) # 光标移动到开头
    content = f.read() # 读取内容, 此时光标移动到结尾
    print(content)
    f.seek(0) # 再次将光标移动到开头
    f.seek(0, 2) # 将光标移动到结尾
    content2 = f.read() # 读取内容. 什么都没有
    print(content2)
    f.seek(0) # 移动到开头
    f.write("张国荣") # 写入信息. 此时光标在9 中⽂文3 * 3个 = 9
    print(f.tell()) # 光标位置9
    f.flush()
    f.close()
    

    1.3 修改文件

    文件修改: 只能将文件中的内容读取到内存中, 将信息修改完毕, 然后将源文件删除, 将新文件的名字改成老文件的名字.

    import os
    with open("../path1/小娃娃", mode="r", encoding="utf-8") as f1,
    open("../path1/小娃娃_new", mode="w", encoding="UTF-8") as f2:
        content = f1.read()
        new_content = content.replace("冰糖葫芦", "⼤白梨")
        f2.write(new_content)
    os.remove("../path1/小娃娃") # 删除源文件
    os.rename("../path1/小娃娃_new", "小娃娃") # 重命名新文件
    

    弊端: 多次次将所有内容进行读取. 内存溢出. 解决方案: 一行一行的读取和操作

    import os
    with open("小娃娃", mode="r", encoding="utf-8") as f1,
    open("小娃娃_new", mode="w", encoding="UTF-8") as f2:
        for line in f1:
            new_line = line.replace("大白梨", "冰糖葫芦")
            f2.write(new_line)
    os.remove("小娃娃") # 删除源⽂文件
    os.rename("小娃娃_new", "小娃娃") # 重命名新文件
    
    有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。 想到与得到中间还有两个字——做到。
  • 相关阅读:
    matlab绘图的坐标轴数字、范围、间隔控制
    机器学习降维算法一:PCA(主成分分析算法)
    信息检索X科普一:查准与召回(Precision & Recall),F1 Measure
    matlab 绘图字体大小控制
    机器学习降维算法二:LDA(Linear Discriminant Analysis)
    25款.NET开发工具
    CA0503:无法显示额外的代码分析警告或错误
    ReportViewer实例教程
    Rational Rose2003 安装错误之error 1920.service NUTCRACKERservice
    读取SqlServer表名及结构
  • 原文地址:https://www.cnblogs.com/huoxc/p/13064832.html
Copyright © 2011-2022 走看看