要以讀文件的模式打開一個文件對象,使用Python內置的open()
函數,傳入文件名和標示符,標示符'r'表示讀。
>>> f = open('D:/test.txt','r')注意了,對初學python的同學而言,open()函數著實存在一個不大不小的坑,而且十分不容易發現。
錯誤演示:
>>> 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' 仿佛沒有什么不對的地方,一模一樣的嘛!再仔細看,斜杠的方向不一樣,為什么會出現這樣的情況呢,原因在于我們從系統中直接復制文件所在路徑所致。這就引出了轉義字符的概念,需要在字符中使用特殊字符時,python用反斜杠’/’轉義字符,所以錯誤案例中的’/’被用作轉義,導致解釋器解釋文件路徑錯誤。
改正的方法有兩種:第一、將’/’的方向反向為’/’,即文首正確的寫法;第二、在含有轉義符的字符串前加‘r’表示字符串內按原始含義解釋,不做轉義處理。(推薦?。?/strong>
>>> f = open(r'D:/test.txt','r')另附:
轉義字符表
轉義字符 | 描述 |
/(在行尾時) | 續行符 |
// | 反斜杠符號 |
/' | 單引號 |
/" | 雙引號 |
/a | 響鈴 |
/b | 退格(Backspace) |
/e | 轉義 |
/000 | 空 |
/n | 換行 |
/v | 縱向制表符 |
/t | 橫向制表符 |
/r | 回車 |
/f | 換頁 |
/oyy | 八進制數,yy代表的字符,例如:/o12代表換行 |
/xyy | 十六進制數,yy代表的字符,例如:/x0a代表換行 |
/other | 其它的字符以普通格式輸出 |
open()函數標識符表
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。
r+ 打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w 打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
w+ 打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a 打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。
ab+ 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。
新聞熱點
疑難解答