zoukankan      html  css  js  c++  java
  • 文件操作一其他操作

    其他相关操作

    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()
    

    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()
    

    修改文件

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

    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", "小娃娃") # 重命名新文件
    

    with open(文件操作名,模式,编码)as f:
    操作
    with open的好处:
    1.可以同时打开多个文件
    2.能够自动关闭文件

    修改文件内容:
    1.创建一个新的文件
    2.将文件中的内容进行替换
    3.替换后的内容写入新文件中
    4.改变文件名

    路径:
        绝对路径: 从磁盘根部进行查找
        相对路径: ../返回上一级  --推荐使用
        转义:
            1."C:\user\ner"
            2. r"C:user
    er"  -- 推荐使用
  • 相关阅读:
    绝对有效 IntelliJ IDEA2019.2下载、安装及破解教程
    SpringBoot 打包成war包,部署到tomcat
    Spring Boot 项目实战(一)Maven 多模块项目搭建
    ImportBeanDefinitionRegistrar接口实现bean动态注入
    FactoryBean的实现原理与作用
    ClassPathBeanDefinitionScanner 说明
    InstantiationAwareBeanPostProcessor 分析
    Google Guava Cache 全解析
    二十三、并发编程之深入解析Condition源码
    InheritableThreadLocal详解
  • 原文地址:https://www.cnblogs.com/luckinlee/p/11620043.html
Copyright © 2011-2022 走看看