• 文件处理二


    文件处理二

    一、文本打开模式

    # 'r'的用法:只读,若没有该文件会报错
    f = open(r'1.txt',mode="r",encoding="utf-8")#r的作用是防止转义
    print(f.read())#read的类型是读完之后光标就跑到末尾,所以第二次打印以后会看不到内容
    # print(f.read())
    f.close()
    >>>亚峰666
    燃烧吧
    月薪30k
    月薪30k
    月薪30k
    
    #'rb'的用法
    f = open(r'a.txt',mode='rb')#此时不需要encoding=,因为已经是二进制模式
    print(f.read())
    f.close()
    >>>b'xe6x9cx88xe8x96xaa30kxe5x8axa0xe6xb2xb9xe5x8axa0xe6xb2xb9'
    
    #'w'的用法:只写,若没有就新建一个文件,若改文件存在会先删除原文件中的内容,然后重新写入
    f = open(r'2.txt',mode='w',encoding='utf-8')
    f.write("亚峰加油啊,你是最棒的")
    f.close()
    >>>亚峰加油啊,你是最棒的
    
    #'wb'的用法
    f = open(r'3.txt',mode='wb')#bytes类型
    f.write("亚峰666".encode('utf-8'))#此时是字符串类型,需用变成“wb”类型,即用.encode
    f.close()
    >>>亚峰666
    
    #'a'的用法
    f = open(r'3.txt',mode='a',encoding='utf-8')
    f.write("
    燃烧吧")
    f.close()
    >>>亚峰666
       燃烧吧
        
    #'r+w'的用法,#先读后写
    f = open(r'3.txt',mode='r+',encoding='utf-8')
    print(f.read())
    f.write("
    月薪30k")
    f.close()
    >>>亚峰666
       燃烧吧
       月薪30k
    
    #'r+b'也是读写(以byte类型)
    f = open(r'3.txt',mode='r+b')
    print(f.read())
    f.write("月薪30k".encode('utf-8'))#先写后读光标会从第一个开始,也就是会替换你原先的内容,若光标过长,就替换全部
    f.close()
    >>>b'xe4xbax9axe5xb3xb0666
    xe7x87x83xe7x83xa7xe5x90xa7xe6x9cx88xe8x96xaa30k'
    
    #'w+'的用法
    f = open('a.txt',mode='w+',encoding='utf-8')
    f.write("月薪30k")#先写后读光标会从第一个开始,也就是会替换你原先的内容,若光标过长,就替换全部
    print(f.read())
    f.close()
    >>>亚峰666
    燃烧吧月薪30k月薪30k
    
    #'a+'的用法
    f = open('1.txt',mode='a+',encoding='utf-8')
    f.write("
    月薪30k")
    f.seek(0)#光标从0 开始
    print(f.read())
    f.close()
    >>>亚峰666
    燃烧吧
    月薪30k
    月薪30k
    月薪30k
    
    月薪30k
    
    

    二、其他玩法

    #read
    f = open('a.txt',mode='r+',encoding='utf-8')
    content = f.read(3)#读出来的都是字符,可指定读取个数
    print(content)
    f.close()
    >>>月薪3
    
    #seek
    f = open('a.txt',mode='r+',encoding='utf-8')
    f.seek(3)#是按照字节去定光标,注意一个中文三个字符
    content = f.read()
    print(content)
    f.close()
    >>>薪30k加油加油加油
    
    #tell
    f = open('a.txt',mode='a+',encoding='utf-8')
    f.write('加油')
    # print(f.tell())#告诉你光标的位置
    count = f.tell()
    f.seek(count-9)#向前移动9个字符
    print(f.read(2))#只读2个字符
    f.close()
    >>>油加
    
    with open(r"a.txt", mode='w')as f:
        #注意 f.write('[]')不可以列表
        f.writelines(['1','l'])  # for + f.write#改模式则可以,但列表中的内容必须为字符串,不可为其他类	型
    
    
    

    三、小应用

    • 写入文本
    import time
    
    res = time.strftime('%Y-%m-%d %H:%M:%S')#时间库获取年月日,时
    
    with open(r'01.txt','a',encoding='utf-8')as f:
        for i in range(10):
            f.write(f'{res}:马上要学函数了,有点难,怎么办
    ')
    
    • 获取文件实时动态
    import time
    
    with open(r"a.txt", 'r', encoding='utf-8')as f:
        # f.seek(0, 2)  # 以文件末尾为参照点,移动0位
        while True:
            # time.sleep()
            res = f.readline()  # 一次读一行
            if res:  # 如果你读出数据了,就执行下面的代码块
                print(f'录入记录:{res}')
    

    四、修改文件内容

    # 第一方案
    with open(r'02.txt','r',encoding='utf-8')as f:
        data = f.read()
        print(data)
        print(type(data))
    
    with open(r'02.txt','w',encoding='utf-8')as f:
        res = data.replace('副书记','亚峰牛批')
        f.write(res)
    
    
    with open(r'02.txt','r',encoding='utf-8')as rf,
            open(r'02.txt','a',encoding='utf-8')as wf:
        data = rf.read()
        res = data.replace('副书记', '亚峰牛批')
        wf.seek(0,0)
        wf.write(res)
    >>>几哈亚峰牛批公积金卡的国家几哈亚峰牛批公积金卡的国家
    <class 'str'>
    
    #第二种方案
    import os
    
    with open(r'02.txt','r',encoding='utf-8')as rf,
            open(r'03_wap.txt','w',encoding='utf-8')as wf:
        data = rf.read()
        res = data.replace('公积金', '亚峰666')
        wf.write(res)
    
    os.remove('02.txt')
    os.rename('03_wap.txt','b.txt')
    >>>几哈亚峰牛批亚峰666卡的国家几哈亚峰牛批亚峰666卡的国家几哈亚峰牛批亚峰666卡的国家几哈亚峰牛批亚峰666卡的国家
    
  • 相关阅读:
    Windows2003服务器IIS启用Gzip压缩
    使用CDN加速后网站不能使用HttpWebRequest提交数据
    隐藏其它数据库,只让用户能够看到自己拥有权限的数据库
    磁盘阵列的基本概念
    前端构建相关
    一个日志记录类
    手把手教你做个splash(屏幕启动)
    调试问题及解决方案集锦
    c#
    。net中各大编程网址
  • 原文地址:https://www.cnblogs.com/yafeng666/p/11820971.html
Copyright © 2020-2023  润新知