• 文件的高级应用及修改的两种方式


    文件的高级应用及修改的两种方式

    一、文件的高级应用

    1.1 r+(既可读又可写)

    with open('test.py', 'r+', encoding='utf8') as fr:
        data = fr.read()
        print(fr.writable())
        fr.write('x = 10')
        print(data)
    ------------------------------------------------
    True
    '''
    sean sb
    tank sb
    jason sb
    nick 大帅比
    '''
    

    1.2 w+(不建议使用)

    with open('test.py', 'w+', encoding='utf8') as fr:
        print(fr.readable())
        fr.write('x = 10')
        data =  fr.read()
        print(data)
    ----------------------------------------
    True    
    

    1.2 a+(a的指针在末尾。更不建议使用)

    with open('test.py', 'a+', encoding='utf8') as fr:
        fr.seek(1, 0)   #表示指针从头开始,偏移一位
        data = fr.read()  # 指针在末尾
        print(data)
    -----------------------------------------------------
     = 10
    

    二、文件的内置方法

    2.1 seek 指针(按字节位移动)

    with open('test.py', 'rb') as fr:
        fr.seek(1)  # 1表示位移1位,默认从文件头开始
        fr.seek(1, 0)  # 1表示偏移1位,0表示从头开始  
        fr.seek(2, 1)  # 2表示偏移2位,1表示从当前位置开始  
        fr.seek(0, 2)  # 0表示偏移0位,2表示文件末开始,把指针移到文件末
    

    2.2 tell(告诉当前指针的位置) (按字节移动)

    with open('test.py', 'r', encoding='utf8') as fr:
        fr.seek(2, 0)   #从文件头开始,偏移2位
        print(fr.tell())     
    -----------------------------------------------------
    2
    

    2.3 read(n) (读几个字符)

    with open('test.py', 'r', encoding='utf8') as fr:
        print(fr.read(2))  # 读了2个字符也就是读了6个字节
    

    2.4 truncate 截断 (按字节移动)

    with open('test.py', 'a', encoding='utf8') as fr:
    	fr.truncate(2)  # 把2个字节后面的东西全清空 
    	#一个英文是1个字节,一个中文是3个字节
    	
    

    三、文件修改的两种方式

    3.1 方式一

    import os
    with open('test.py', 'r', encoding='utf8') as fr, 
            open('test_swap.py', 'w', encoding='utf8') as fw:
        data = fr.read()   #全部读入内存,如果文件很大会很卡
        data = data.replace('sb', 'ss')  #在内存中完成修改
        fw.write(data)   # 新文件一次性写入原文件内容
    os.remove('test.py')  # 删除文件
    os.rename('test_swap.py', 'test.py')  # 重命名文件
    

    3.2 方式二

    import os
    with open('test.py', 'r', encoding='utf8') as fr, 
            open('test_swap.py', 'w', encoding='utf8') as fw:
        for i in fr   #对fr文件里面的内容进行一个循环,逐行修改
        i = i.replace('sb', 'ss')  #在内存中完成修改
        fw.write(i)   # 新文件写入原文件修改后内容
    os.remove('test.py')  # 删除文件
    os.rename('test_swap.py', 'test.py')  # 重命名文件
    
    
  • 相关阅读:
    disabled
    C# 实例化顺序
    session问题
    Node js文件系统
    Node js WEB模块
    Node js GET POST请求
    Node js路由
    Node js函数
    Node js模块系统
    Node js 安装+回调函数+事件
  • 原文地址:https://www.cnblogs.com/zhuangyl23/p/11321886.html
Copyright © 2020-2023  润新知