開發者學堂課程【Python 語言基礎 3:函數、面向對象、異常處理:打開檔案】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/601/detail/8766打開檔案
内容簡介
一、檔案
二、Open 傳回值
三、總結
一、檔案(file)
在我們的計算機裡一切皆是檔案,比如說 “01.異常.py” 這是一個文本檔案,電腦桌面上的所有圖示快捷方式也是檔案,随便一個軟體打開檔案所在位置會發現裡面是各種各樣的檔案,包括看的電影、圖檔,聽的音樂,所有在計算機裡存的東西都是檔案。我們可以手動的對這些檔案進行操作,同樣在 python 中也可以通過程式對檔案進行操作。
是以,這裡所說的檔案是指:
1、通過 python 程式對計算機中的各種檔案進行增删改查的操作。
2、檔案還有另一個名字叫做 i/o(input/output)input 是輸入,output 是輸出。注意這都是對我們人來講的,input 是指人通過程式從計算機中讀取資訊向人輸入,同樣,output 是指從人這裡把一些資訊輸出到檔案裡。
3、操作檔案的步驟:
①打開檔案
②對檔案進行各種操作(讀、寫),然後儲存
③關閉檔案
這是手工去操作一個檔案的步驟。同樣在 python 裡對檔案進行操作也需要經曆這三個步驟。
通過 python 建立一個檔案名叫 demo.txt 的檔案,檔案裡寫入 lorem 然後按下 tab 鍵回車會自動生成。
這個英文文本沒有任何意義,隻是一個測試排版的文本。
現在想要打開 demo.txt 的檔案,需要使用 python 的内接函數,找到文檔中的Library Reference,打開 Built-in Functions,找到 open(),找到函數
open(file, mode='r, uffering-g-1 encoding=None, errors -
None, newine=None, closefd= True, opener-None)
複制粘貼進 python。這就是一個打開檔案的函數。
這裡 file 是要打開的檔案的名字(路徑)
這裡建立一個變量,來儲存檔案的名字:
file
name=‘demo.txt’
這時候直接用
open(file
name
)作為第一個參數傳進去,這就是打開file name對應的檔案。如何驗證檔案是不是打開呢?隻要不報錯就是打開了。方法是先改一個
file
name=‘demo123.txt’
執行會發現報錯了。
但是這個錯誤實際上跟file沒有任何關系,因為報的是文法的錯誤,是編碼的問題。報這個錯誤是因為一開始使用代碼時裡面有一個
encoding=None
,這 在 python中會被解析成要設定檔案的編碼,是以報錯。要避免這種報錯隻需要修改一下,加一個下劃線
encoding
=None
就可以了。這個時候執行封包件報的錯就是我們檔案的錯誤了。
報錯的原因是因為剛才把檔案的名給改成了 demo123.txt。檔案名修改到最開始的名字就可以正常打開了。是以以後打開檔案就用 open函數。
傳回一個對象,這個對象代表了目前打開的檔案。比如
file
obj= open
(file
name)#
打開 file name 對應的檔案。 直接
print(file
obj)
儲存列印會出現。
表明這個對象确實存在,已經打開了。如果目标檔案和目前檔案在同一級目錄下,則直接使用檔案名即可。如果不在同一級目錄下,比如建立一個檔案名叫 hello 位于上一級把 demo.txt 檔案移到 hello 裡,這個時候就必須使用完整的路徑:
File
name=‘hello/demo.txt’
儲存執行才能夠找到并打開檔案。這裡要注意如果是同一級目錄下直接使用檔案名就可以,而不在同一級目錄中則需要把路徑加上。
在 w indows 裡表示一個路徑的時候應該用的是\,但是在這裡使用\的話會出現問題,因為 在 python 裡 \ 代表的是轉義字元。是以在 windows 系統使用路徑時,可以使用 / 代替\。或者可以使用 \\ 代替 \,或者也可以使用原始字元串。原始字元串就是在字元串前加r比如:
file
name=r‘hello\demo.txt
這時候裡邊的轉義字元就會被忽略。
現在把 hello 檔案在往上移一級,
file
name=r‘hello\demo.txt
這個字元串就沒有效果了,是以表示路徑,可以使用..來傳回上一級目錄。
現在是在 code,需要先到 hello 裡是以:
file name=‘../hello/demo.txt’
。這裡..就表示需要從目前目錄出來也就是 code,出來後再去 hello 裡邊找demo.txt。儲存執行後就可以找到 demo.txt 檔案了。
如果目标檔案距離目前檔案比較遠,此時可以使用絕對路徑。
絕對路徑應該從磁盤的根目錄開始書寫,比如桌面上的快捷方式就需要打開檔案所在位置全部複制路徑:
file
name=‘D:\QQ\Bin\QQScLauncher.exe’
注意這裡\需要改成/或者使用原始字元串加上 r。
這就是一個絕對根路徑,儲存執行也可以找到目标檔案。
如果檔案在目前目錄下直接寫檔案名,如果不在目前目錄下要寫路徑,如果不在路徑裡面用..傳回,如果絕對路徑比較遠,需要使用檔案的絕對路徑。