python 文件操作读、写、追加的区别

发布时间:2019-09-11 07:42:51编辑:auto阅读(1744)

    打开文件的常用模式有:

    • r ,只读模式【默认】
    • w,只写模式【不可读;不存在则创建;存在则清空内容;】
    • a, 追加模式【可读; 不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】【可理解为先读后写,不擦除原文件内容,指针在0】
    • w+,写读【可读,可写】【可理解为先写后读,擦除原文件内容,指针在0】
    • a+, 写读【可读,可写】【不擦除原文件内容,但指针直接到最后,读取原内容先重置指针】
    模式 可做操作 若文件不存在 是否覆盖 指针位置
    r 只能读 报错 - 0
    r+ 可读可写 报错 0
    w 只能写 创建 0
    w+ 可写可读 创建 0
    a 只能写 创建 否,追加写 最后
    a+ 可读可写 创建 否,追加写 最后

    可以作个测试文件,修改下打开模式,然后输出看下指针区别

    f=open('I:\\python\\test\\text.txt','r+')
    print('指针在:',f.tell())
    lines=f.read()
    if f.writable():
        f.write('nono\n')
    else:
        print("此模式不可写")
    print('指针在:',f.tell())
    f.close()
    

    a+模式下,虽然能读取,但指针已到最后,直接read,不会出内容,可以用seek()重置指针

    f=open('I:\\python\\test\\text.txt','a+')
    print('指针在:',f.tell())
    lines=f.read()
    print('文件内容是:',lines)  #输出为空
    print('seek 0')
    f.seek(0)
    print('指针在:',f.tell())
    lines=f.read()
    print('文件内容是:',lines)
    if f.writable():
        f.write('nono\n')
    else:
        print("此模式不可写")
    print('指针在:',f.tell())
    f.close()
    

关键字