Python學習筆記之open()函數(shù)打開文件路徑報錯問題
要以讀文件的模式打開一個文件對象,使用Python內(nèi)置的open()函數(shù),傳入文件名和標示符,標示符'r'表示讀。
>>> f = open('D:/test.txt','r')
注意了,對初學python的同學而言,open()函數(shù)著實存在一個不大不小的坑,而且十分不容易發(fā)現(xiàn)。
錯誤演示:
>>> f = open('D:\test.txt','r')
Traceback (most recent call last):
File"<ipython-input-56-6a0acaf613c9>", line 1, in <module>
f =open('D:\test.txt','r')
OSError: [Errno 22] Invalid argument: 'D:\test.txt'
仿佛沒有什么不對的地方,一模一樣的嘛!再仔細看,斜杠的方向不一樣,為什么會出現(xiàn)這樣的情況呢,原因在于我們從系統(tǒng)中直接復制文件所在路徑所致,Windows系統(tǒng)文件路徑中的斜線符號為'\'。

這就引出了轉(zhuǎn)義字符的概念,需要在字符中使用特殊字符時,python用反斜杠'\'轉(zhuǎn)義字符,所以錯誤案例中的'\'被用作轉(zhuǎn)義,導致解釋器解釋文件路徑錯誤。
改正的方法有兩種:第一、將'\'的方向反向為'/',即文首正確的寫法;第二、在含有轉(zhuǎn)義符的字符串前加‘r'表示字符串內(nèi)按原始含義解釋,不做轉(zhuǎn)義處理。(推薦!)
>>> f = open(r'D:\test.txt','r')
另附:
轉(zhuǎn)義字符表
|
轉(zhuǎn)義字符 |
描述 |
|
\(在行尾時) |
續(xù)行符 |
|
\\ |
反斜杠符號 |
|
\' |
單引號 |
|
\" |
雙引號 |
|
\a |
響鈴 |
|
\b |
退格(Backspace) |
|
\e |
轉(zhuǎn)義 |
|
\000 |
空 |
|
\n |
換行 |
|
\v |
縱向制表符 |
|
\t |
橫向制表符 |
|
\r |
回車 |
|
\f |
換頁 |
|
\oyy |
八進制數(shù),yy代表的字符,例如:\o12代表換行 |
|
\xyy |
十六進制數(shù),yy代表的字符,例如:\x0a代表換行 |
|
\other |
其它的字符以普通格式輸出 |
open()函數(shù)標識符表
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。
r+ 打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w 打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb 以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
w+ 打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb+ 以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a 打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。
ab 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。
a+ 打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。
ab+ 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python+Pygame實現(xiàn)海洋之神大冒險游戲
這篇文章主要介紹了如何利用Python+Pygame自制一個海洋之神大冒險游戲。規(guī)則是在海里收集魚骨頭,有些魚骨頭可以轉(zhuǎn)化為武器,用來攻擊敵人,感興趣的可以了解一下2022-08-08
Python實現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組
這篇文章主要介紹了Python實現(xiàn)將wav轉(zhuǎn)amr,并轉(zhuǎn)換成hex數(shù)組方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
Django項目定期自動清除過期session的2種方法實例
如果用戶主動退出,session會自動清除,如果沒有退出就一直保留,記錄數(shù)越來越大,要定時清理沒用的session,下面這篇文章主要給大家介紹了關(guān)于Django項目定期自動清除過期session的2種方法,需要的朋友可以參考下2022-08-08

