1. 程式人生 > >python 文件操作讀、寫、追加的區別

python 文件操作讀、寫、追加的區別

創建 測試文件 表示 int table clas 文件 擦除 不可

打開文件的常用模式有:

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

python 文件操作讀、寫、追加的區別