標籤:seek 理解 區別 唯讀 模式 lan else 讀取 table
開啟檔案的常用模式有:
- 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 檔案操作讀、寫、追加的區別