python中的open()函數用於打開一個文件,創建file對象,相關方法才可以調用它進行讀寫
語法:open(name,[,model[,buffering]])
| 模式 | 描述 |
|---|---|
| r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
| rb | 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。 |
| r+ | 打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
| rb+ | 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
| w | 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。 |
| wb | 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。 |
| w+ | 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。 |
| wb+ | 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。 |
| a | 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。 |
| ab | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。 |
| a+ | 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。 |
| ab+ | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。 |
1.讀文件
![]()
如果文件打開成功,則顯示打開文件ex15_sample.txt的內容

最后一步調用close()方法關閉文件,使用文件完畢后必須關閉文件。因為文件對象會占用操作系統資源,且操作系統同時打開文件數量有限

由於文件讀寫會產生IO error ,如果報錯會導致后面的close()無法執行,所以為了保證是否出錯都能正確關閉文件,可以使用try-finally 來實現

(ps:注意try-finally中的縮進問題)
2.使用with open函數打開,以及常見的坑
#with作用就是調用close()方法

跟前面的try-finally實現功能一樣,但是代碼更簡潔
file對象方法
- file.read(size):size未指定則返回整個文件,如果文件大小>2倍內存則有問題.f.read()讀到文件尾時返回""(即空字符串)。
- file.readline():每次讀取一行
- file.readlines([size]):一次性讀取所有內容並返回list
- for line in f:print(line) :通過迭代器訪問
- f.write("hello\n"):如果要寫入字符串以外的數據,先將他轉換為字符串
- f.tell():返回一個整數,表示當前文件指針的位置(文件頭的字節數)

- 如果文件小,用read()一次性讀取最方便,不確定大小建議用read(size)比較保險,如果是配置文件使用readlines()最方便。
1.打開非utf-8編碼的文件
f=open('/users/wujing/desktop/test2020/ex15_sample.txt','r',encoding='gbk')
f.read()
2.打開二進制文件
讀取二進制文件,比如圖片、視頻等,用rb模式打開即可
參考資料:https://blog.csdn.net/chenmozhe22/article/details/81434549
