• Python中对文件处理


    open(file_name,mode,encoding)输出参数:

    file_name = 'a.txt'  # 以相对路径打开(优先使用,可移植性强)
    '''
    a.txt   # 与当前py程序在同一级目录下
    r'dira.txt' # 在当前路径的子目录dir下的a.txt
    
    '''
    file_name = r'D:PYTHONOLDBOYDAY7a.txt'  # 以绝对路径打开
    #**********************************************************
    mode = 'rt' 'rb'  # 只读模式打开,r表示文本模式,b表示字节模式。对于图片、音频、视频等文件需要用字节模式操作
    '''
    1.文件不存在会报错
    2.文件指针移到文件开头
    '''
    mode = 'wt' 'wb'  # 只写模式打开
    '''
    1.文件不存在则创建文件,指针在文件开头
    2.文件存在则会清空文件内容,指针在文件开头
    '''
    mode = 'at'  'ab'  # 追加模式打开(只写),指针在文件末尾
    '''
    1.文件不存在则创建文件,指针在文件开头
    2.文件存在则将指针移到文件尾。(所写入的内容追加到文件尾)
    '''
    #**********************************************************
    encoding = 'utf-8'
    encoding = 'GBK'
    '''
    指定文件的打开编码模式(文件以什么编码存,就以什么编码打开)
    即可保证不乱码
    当以字节模式打开时,该参数不可设置!
    '''
    #**********************************************************
    
    open(file_name, mode, encoding=encoding)

     open()方法返回一个文件对象,使用完毕后需要调用f.close()方法释放文件对象。python中提供了更简洁的方式:

    with open('a.txt','r') as f:
        pass
    # 在with代码块下的语句都执行完时,会自动释放文件内存。

    文件对象的内置方法:

    with open('a.txt','r',encoding='utf-8') as f:
        data = f.read()                 # 一次性读取所有内容到内存中
        print(data)
    with open('a.txt','r',encoding='utf-8') as f:
        data = f.readline()            # 读取一行内容到内存中
        print(data)
    with open('a.txt','r',encoding='utf-8') as f:
        data = f.readlines()            # 一次性读取所有内容,以每行内容作为元素返回一个列表
        print(data)

     

    with open('a.txt','w',encoding='utf-8') as f:
        f.write('哈哈哈哈')
        f.writelines(['哈哈哈','啊啊啊啊'])

     **********************************************************************************************

    关于读写要注意的地方:

        当以w方式打开一个文件,调用f.write()的方法时,写入的数据在内存中,注意:在f.close()之后才会写入到硬盘之中。

        当以r方式打开一个文件,调用f.read()的方法时,将实时读取硬盘中的数据。(内部机制可能时句柄,操作系统会向句柄管理员实时汇报内容)

    验证代码:

    监控:

    import time
    
    with open('c.txt','r',encoding='utf-8')as f:
        f.seek(0,2)
        while True:
            res = f.readline()
            if res:
                print(res,end='')
            else:
                time.sleep(0.5)

    写入:

    import time
    
    with open('c.txt', 'a', encoding='utf-8') as f:
        while True:
            time.sleep(1)
            print('zhengzaishuru')
            f.write(time.strftime('%Y-%m-%d %H:%M:%S
    '))

    将监控不到任何数据,原因就是:在写入未运行close()之前,内容不会被写入。而中断程序,将不会运行close()方法。所以c.txt里的内容不会有任何变化。

    加入flush()将写入的内容存储至硬盘

    import time
    
    with open('c.txt', 'a', encoding='utf-8') as f:
        while True:
            time.sleep(1)
            print('zhengzaishuru')
            f.write(time.strftime('%Y-%m-%d %H:%M:%S
    '))
            f.flush()
  • 相关阅读:
    IOS 开发者账号 (team账号)
    我能否把一个开发者帐号下的app转移到另一个开发者帐号下面?
    Xcode清楚缓存、清理多余证书
    CABasiAnimation的变化属性
    CATransform3DMakeRotation注意
    绘图详解(转摘)
    iOS开发UI篇—核心动画(UIView封装动画)(转摘)
    iOS开发UI篇—核心动画(转场动画和组动画)(转摘)
    iOS开发UI篇—核心动画(关键帧动画)(转摘)
    iOS开发UI篇—核心动画(基础动画)
  • 原文地址:https://www.cnblogs.com/Ghostant/p/11814976.html
Copyright © 2020-2023  润新知