>> f = open( D:/test.txt , r ) 注意了,對(duì)初學(xué)..."/>
溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python學(xué)習(xí)筆記之open()函數(shù)打開(kāi)文件路徑報(bào)錯(cuò)問(wèn)題

發(fā)布時(shí)間:2020-09-15 15:20:04 來(lái)源:腳本之家 閱讀:233 作者:marsjhao 欄目:開(kāi)發(fā)技術(shù)

要以讀文件的模式打開(kāi)一個(gè)文件對(duì)象,使用Python內(nèi)置的open()函數(shù),傳入文件名和標(biāo)示符,標(biāo)示符'r'表示讀。

>>> f = open('D:/test.txt','r') 

注意了,對(duì)初學(xué)python的同學(xué)而言,open()函數(shù)著實(shí)存在一個(gè)不大不小的坑,而且十分不容易發(fā)現(xiàn)。

錯(cuò)誤演示:

>>> 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' 

仿佛沒(méi)有什么不對(duì)的地方,一模一樣的嘛!再仔細(xì)看,斜杠的方向不一樣,為什么會(huì)出現(xiàn)這樣的情況呢,原因在于我們從系統(tǒng)中直接復(fù)制文件所在路徑所致,Windows系統(tǒng)文件路徑中的斜線符號(hào)為'\'。

 Python學(xué)習(xí)筆記之open()函數(shù)打開(kāi)文件路徑報(bào)錯(cuò)問(wèn)題

這就引出了轉(zhuǎn)義字符的概念,需要在字符中使用特殊字符時(shí),python用反斜杠'\'轉(zhuǎn)義字符,所以錯(cuò)誤案例中的'\'被用作轉(zhuǎn)義,導(dǎo)致解釋器解釋文件路徑錯(cuò)誤。

改正的方法有兩種:第一、將'\'的方向反向?yàn)?/',即文首正確的寫法;第二、在含有轉(zhuǎn)義符的字符串前加‘r'表示字符串內(nèi)按原始含義解釋,不做轉(zhuǎn)義處理。(推薦?。?/p>

>>> f = open(r'D:\test.txt','r') 

另附:

轉(zhuǎn)義字符表

轉(zhuǎn)義字符

描述

\(在行尾時(shí))

續(xù)行符

\\

反斜杠符號(hào)

\'

單引號(hào)

\"

雙引號(hào)

\a

響鈴

\b

退格(Backspace)

\e

轉(zhuǎn)義

\000

\n

換行

\v

縱向制表符

\t

橫向制表符

\r

回車

\f

換頁(yè)

\oyy

八進(jìn)制數(shù),yy代表的字符,例如:\o12代表?yè)Q行

\xyy

十六進(jìn)制數(shù),yy代表的字符,例如:\x0a代表?yè)Q行

\other

其它的字符以普通格式輸出

open()函數(shù)標(biāo)識(shí)符表

r 以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。

rb 以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。

r+ 打開(kāi)一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開(kāi)頭。

rb+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開(kāi)頭。

w 打開(kāi)一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。

wb 以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。

w+ 打開(kāi)一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。

wb+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。

a 打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。

ab 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。

a+ 打開(kāi)一個(gè)文件用于讀寫。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。

ab+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI