• 第六天——文件处理其它操作(五)



    文件处理其它操作

    一.其他相关操作

    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", "小娃娃") # 重命名新文件
    
    有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。 想到与得到中间还有两个字——做到。
  • 相关阅读:
    jQuery性能优化
    Google Chrome 浏览器 错误 312 (net::ERR_UNSAFE_PORT):未知错误。
    C#简单数字验证码解析
    折半查找
    平均分配算法之倒序贪婪
    字符串相似度算法(编辑距离算法 Levenshtein Distance)
    c# 冒泡排序算法中三种前后值交换算法效率测试
    二叉树的遍历
    C#使用Tesseract OCR 解析验证码
    页面瘦身之压缩viewState和保存viewState到服务器
  • 原文地址:https://www.cnblogs.com/huoxc/p/13064832.html
Copyright © 2020-2023  润新知