精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

open函數(shù)-打開文件并返回文件對(duì)象

汽車電子技術(shù) ? 來源:安迪python學(xué)習(xí)筆記 ? 作者:安迪python學(xué)習(xí)筆記 ? 2023-02-23 10:06 ? 次閱讀
    1. open() 函數(shù)的作用
    1. open函數(shù)語法參考
    1. open()函數(shù)參數(shù)說明
      1. file參數(shù)
      1. encoding 參數(shù)
      1. errors參數(shù)
      1. mode參數(shù)
    1. mode參數(shù)詳解
      1. 準(zhǔn)備工作
      1. w 寫入模式
      1. a 追加模式
      1. r 只讀模式
    1. 總結(jié)
      1. 代碼總結(jié)
      1. 路徑的轉(zhuǎn)義
      1. mode模式
      1. 圖片總結(jié)

1. open() 函數(shù)的作用

open[???p?n]:打開。

open的中文釋義是打開。

open( )函數(shù)的作用是打開文件。

【返回值】

open函數(shù)返回的是一個(gè)文件對(duì)象。

2. open函數(shù)語法參考

open 函數(shù)語法如下:

open(file, mode='r', encoding='None', errors='None')

file[fa?l]:文件。

mode[m??d]:模式。

encoding[?n?k??d??]:編碼。

errors[?er?z]:錯(cuò)誤。

none [n?n]:沒有。

open( )函數(shù)中的參數(shù)還有很多,這里介紹4個(gè)常用參數(shù)。

3. open()函數(shù)參數(shù)說明

1. file參數(shù)

file[fa?l]:文件。

file 是必需參數(shù)。

參數(shù)file 表示要打開文件的路徑。

路徑可以是絕對(duì)路徑,也可以是相對(duì)路徑。

絕對(duì)路徑是指文件在硬盤上真正存在的路徑。

相對(duì)路徑是針對(duì)當(dāng)前文件夾這一參考對(duì)象,來描述文件路徑的形式。

參考《68.Python的相對(duì)路徑》。

2. encoding 參數(shù)

encoding[?n?k??d??]:編碼。

參數(shù) encoding 表示文件的編碼方式,文件編碼方式一般為 'utf-8'。

為了避免程序報(bào)錯(cuò)或者讀取到的內(nèi)容出現(xiàn)亂碼,需要把 encoding 設(shè)置為 'utf-8',即寫為 encoding='utf-8'。

編碼的詳細(xì)知識(shí),以后在做詳細(xì)介紹。

3. errors參數(shù)

errors 參數(shù)表示讀寫文件時(shí)碰到錯(cuò)誤的報(bào)錯(cuò)級(jí)別。

strict [str?kt]:嚴(yán)格的。

strict:嚴(yán)格級(jí)別。字符編碼有報(bào)錯(cuò)即拋出異常。也是默認(rèn)級(jí)別,errors 參數(shù)值傳入None 即按此級(jí)別拋出異常。

ignore [?ɡ?n??]:忽視、忽略。

ignore:忽略級(jí)別。字符編號(hào)有錯(cuò)誤,忽略掉。

推薦errors參數(shù)的取值為'ignore',表示在遇到編碼錯(cuò)誤時(shí)忽略該錯(cuò)誤,程序會(huì)繼續(xù)執(zhí)行,不會(huì)退出。

replace [r??ple?s]:替代。

replace:替換級(jí)別,字符編碼有錯(cuò)的,替換成?。

4. mode參數(shù)

mode[m??d]:模式。

mode 是可選參數(shù)。

參數(shù)mode決定了打開文件的模式。

r:以只讀模式打開文件。

t:以文本文件模式打開文件。

b:以二進(jìn)制文件文件模式打開文件。

w:以只寫模式打開文件,不能讀內(nèi)容。如果文件不存在,則創(chuàng)建文件;如果文件存在,則覆蓋文件的內(nèi)容。

x:以獨(dú)占創(chuàng)建模式打開文件,如果文件不存在,則創(chuàng)建并以寫入模式打開;如果文件已存在,則引發(fā)FileExistsError異常。

a:以追加模式打開文件,不能讀內(nèi)容。如果文件不存在,則創(chuàng)建文件;如果文件存在,則在文件末尾追加。

+:以更新(讀寫)模式打開文件,必須與r、w或a組合使用,才能設(shè)置文件為讀寫模式。

這些字符可以進(jìn)行組合,以表示不同類型的文件的打開模式,如下表所示。

圖片

69-1mode模式

【備注】上圖來源于《看漫畫學(xué)Python》。

【溫馨提示】

參數(shù) mode 可以不寫,不寫時(shí)mode默認(rèn)值為r,即只讀模式。

4. mode參數(shù)詳解

1. 準(zhǔn)備工作

  1. 我在D盤里新建一個(gè)文件夾命名為69
  2. 我的69文件夾中有1個(gè)名為img的文件夾,有1個(gè)名為69的ipynb文件。(img文件夾是我存儲(chǔ)圖片用的,大家可以不用理會(huì))

vscode編輯器資源管理器中的目錄如下所示:

圖片

69-2

硬盤中的目錄如下所示:

圖片

69-3

  1. 我的代碼在名為69的ipynb文件中編寫。
  2. 我用的vscode編輯器,編輯器打開的文件夾為69

【備注】

編輯器打開的文件夾不同,則相對(duì)路徑不同。

2. w 寫入模式

w:以只寫模式打開文件,不能讀內(nèi)容。如果文件不存在,則創(chuàng)建文件;如果文件存在,則覆蓋文件的內(nèi)容。

【語法解析】

  1. 文件不存在,則創(chuàng)建文件。
  2. 文件存在,則覆蓋文件的內(nèi)容。

以絕對(duì)路徑,w只寫模式打開文件:

f = open ("D:\\\\69\\成績1.txt", "w", encoding="utf-8")

以相對(duì)路徑,w只寫模式打開文件:

f = open ("成績2.txt", "w", encoding="utf-8")

【代碼解析】

f 是變量名,接收open 函數(shù)返回的文件對(duì)象;

"D:\\\\69\\成績1.txt"是文件的絕對(duì)路徑。

"成績2.txt"是文件的相對(duì)路徑。

w表示只寫模式。

w 模式下,文件存在則打開文件,文件不存在則新建文件。

我們在準(zhǔn)備工作時(shí)是沒有新建過txt文件,因此成績1.txt成績2.txt文件此時(shí)不存在。

不存在則新建一個(gè)文件。

因此,運(yùn)行代碼后我們觀察資源管理器目錄或者69文件夾,我們發(fā)現(xiàn)多了成績1.txt成績2.txt2個(gè)文件。

圖片

69-4

這就是文件不存在則新建文件的意思。

【課堂練習(xí)】

修改路徑參數(shù),用絕對(duì)路徑的方法在桌面新建一個(gè)名為測試.txt的文件。

不知道桌面的絕對(duì)路徑的可以用【shift】方法隨便查看一個(gè)桌面文件的絕對(duì)路徑。

下面就是我查看的桌面某個(gè)文件的路徑:

"C:\\Users\\xiaoyuzhou\\Desktop\\空.docx"

參照上面的代碼修改路徑參數(shù),代碼如下:

f = open ("C:\\Users\\xiaoyuzhou\\Desktop\\測試.txt", "w", encoding="utf-8" )

【終端輸出】

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \\UXXXXXXXX escape

運(yùn)行上面的代碼,程序報(bào)錯(cuò)。

程序報(bào)錯(cuò),我們首先考慮路徑參數(shù)轉(zhuǎn)義字符問題。

將路徑參數(shù)中的所有\\都多加上一個(gè)反斜杠\\,修改如下:

f = open ("C:\\\\Users\\\\xiaoyuzhou\\\\Desktop\\\\測試.txt", 
"w", 
encoding="utf-8" )

運(yùn)行代碼后,我們發(fā)現(xiàn)程序能夠正常運(yùn)行。

我們查看電腦桌面,發(fā)現(xiàn)電腦桌面多了一個(gè)名為測試.txt的文件。

但我們發(fā)現(xiàn)增加斜桿的方法實(shí)在太麻煩,那有沒有其它簡便的方法呢?

其實(shí)我們可以通過在路徑參數(shù)前面加上一個(gè)字母r/R,這時(shí)候就不需要使用反斜桿進(jìn)行轉(zhuǎn)義了。

【路徑參數(shù)前增加一個(gè)r】

f = open (r"C:\\Users\\xiaoyuzhou\\Desktop\\測試1.txt", 
"w", 
encoding="utf-8" )

【路徑參數(shù)前增加一個(gè)R】

f = open (R"C:\\Users\\xiaoyuzhou\\Desktop\\測試2.txt", 
"w", 
encoding="utf-8" )

大家觀察電腦桌面,我們就成功的新建了測試1.txt測試2.txt2個(gè)文件。

我們繼續(xù)講解w模式的如果文件存在,則覆蓋文件的內(nèi)容。

我們剛才新建了成績1.txt成績2.txt2個(gè)文件。

那如果文件存在,則w模式可以直接寫入。

成績1.txt中寫入張三,90分

f = open ("成績1.txt", "w", encoding="utf-8")
f.write("張三,90分")
f.close( )

上述代碼的作用是將張三,90分寫入到文件成績1.txt中。

【代碼解析】

f = open ("成績1.txt", "w", encoding="utf-8")

f 是變量名,接收open函數(shù)返回的文件對(duì)象。

"成績1.txt"是open函數(shù)的file參數(shù),表示文件的相對(duì)路徑;

"w"是open函數(shù)的mode參數(shù),表示只寫模式;

encoding表示字符編碼格式為utf-8

f.write("張三,90分")

上述代碼的作用是將張三,90分寫入到文件對(duì)象中,即寫入到成績1.txt

【將內(nèi)容寫入文件的語法】

f.write(obj)

f 是文件對(duì)象,就是一個(gè)變量名,你可以自己命名。

文件對(duì)象后緊跟一個(gè)英文小圓點(diǎn).

write是方法名。

obj為要寫入的內(nèi)容,這里要寫入的內(nèi)容是張三,90分

運(yùn)行代碼后,大家查看成績1.txt文件,如下所示:

圖片

69-5

【關(guān)閉文件語法】

f.close( )

f 是變量名,接收open函數(shù)返回的文件對(duì)象。

文件對(duì)象后緊跟一個(gè)英文小圓點(diǎn).

close是方法名。

【溫馨提示】

大家在Python中操作文件時(shí),注意讀寫完畢后都要進(jìn)行關(guān)閉。這根我們?nèi)粘I钪械牟僮魇且粯拥模魂P(guān)閉文件,我們是沒辦法對(duì)文件進(jìn)行刪除的。

上面代碼我們完成了寫入功能,下面我們講解覆蓋文件的內(nèi)容的含義:

【覆蓋文件的內(nèi)容】

再執(zhí)行下面的代碼之前,大家先打開成績1.txt,確定文件里的內(nèi)容為張三,90分

下面的代碼要實(shí)現(xiàn)的功能是將李四,60分寫入文件成績1.txt

f = open ("成績1.txt", "w", encoding="utf-8")
f.write("李四,60分")
f.close()

運(yùn)行上面的代碼后,我們再觀察成績1.txt文件,如下所示:

圖片

69-6

之前的張三,90分內(nèi)容被覆蓋了,只保留了最后1次寫入的內(nèi)容,這就是覆蓋文件內(nèi)容的意思。

【知識(shí)回顧】

w:以只寫模式打開文件,不能讀內(nèi)容。如果文件不存在,則創(chuàng)建文件;如果文件存在,則覆蓋文件的內(nèi)容。

那如果我不想刪除文件本來就存在的內(nèi)容,怎么辦呢。

我們可以采用追加模式。

3. a 追加模式

a:以追加模式打開文件,不能讀內(nèi)容。如果文件不存在,則創(chuàng)建文件;如果文件存在,則在文件末尾追加。

a追加模式w只寫模式的區(qū)別在于追加模式保留原有內(nèi)容,只寫模式覆蓋原有內(nèi)容。

  1. 將mode參數(shù)修改為a
  2. 寫入內(nèi)容為王五,77分
f = open ("成績1.txt", "a", encoding="utf-8")
f.write("王五,77分")
f.close()

打開成績1.txt,如下圖所示:

圖片

69-7

打開成績1.txt可以看到王五,77分已經(jīng)寫入到文件中,且原有的內(nèi)容李四,60分依然存在,這就是追加模式。

但大家發(fā)現(xiàn)我們寫入的內(nèi)容和原本的內(nèi)容之間沒有符號(hào)作為間隔,不方便我們觀看。那該如何修改呢?

我們采用轉(zhuǎn)義字符的方法可以解決上述問題。

\\n可以實(shí)現(xiàn)換行功能:

f = open ("成績1.txt", "a", encoding="utf-8")
f.write("\\n趙六,66分")
f.close()

輸入后如下圖所示:

圖片

69-8

【轉(zhuǎn)義字符】

圖片

69-9轉(zhuǎn)義字符

【備注】上圖來源于《風(fēng)變編程》。

4. r 只讀模式

r:以只讀模式打開文件。

只能打開已經(jīng)存在的文件。

如果文件不存在,程序不會(huì)創(chuàng)建新的文件,會(huì)報(bào)錯(cuò)。

f = open ("成績9.txt", "r", encoding="utf-8")

【終端輸出】

FileNotFoundError: [Errno 2] No such file or directory: '成績9.txt'

[Errno 2] No such file or directory: '成績9.txt' :沒有這樣的文件或目錄: '成績9.txt '

f = open ("成績1.txt", "r", encoding="utf-8")
f.close()

運(yùn)行上述的代碼,成績1.txt文件其實(shí)已被我們成功打開。

但Python中的打開和我們?nèi)粘I钪械拇蜷_不是一個(gè)含義。

我們工作中的打開,肉眼是可以看到一個(gè)具體的文檔的。

Python中的打開,其實(shí)就是得到一個(gè)文件對(duì)象,方便我們后續(xù)操作文件,這個(gè)文件對(duì)象我們?nèi)庋凼强床灰姷摹?/p>

有時(shí)候我們并不需要對(duì)文件進(jìn)行寫的操作,我們只需要打開文件即只讀模式,此時(shí)我們的第二個(gè)參數(shù)mode 就為r,注意,r也可以不寫。

mode 參數(shù)就講解到這里,剩下的模式將不再進(jìn)行贅述。

5. 總結(jié)

1. 代碼總結(jié)

# w只寫模式
f = open ("花名冊.doc", "w", encoding="utf-8")
f.write("王小溪")

# a追加模式
f = open ("花名冊.doc", "a", encoding="utf-8")
f.write("\\n李華華")

# r只讀模式
f = open ("花名冊.doc", "r", encoding="utf-8")

# 關(guān)閉文件
f.close()

2. 路徑的轉(zhuǎn)義

絕對(duì)路徑參數(shù)前面加上一個(gè)字母r/R,這時(shí)候就不需要使用反斜桿進(jìn)行轉(zhuǎn)義了。

3. mode模式

w:以只寫模式打開文件,不能讀內(nèi)容。如果文件不存在,則創(chuàng)建文件;如果文件存在,則覆蓋文件的內(nèi)容。

a:以追加模式打開文件,不能讀內(nèi)容。如果文件不存在,則創(chuàng)建文件;如果文件存在,則在文件末尾追加。

r:以只讀模式打開文件。

4. 圖片總結(jié)

圖片

69-10. open函數(shù)

【溫馨提示】

如果初學(xué)者在本節(jié)的代碼遇到報(bào)錯(cuò),基本是file路徑參數(shù)的錯(cuò)誤,建議大家回看相對(duì)路徑的相關(guān)知識(shí),相對(duì)路徑是非常重要的一個(gè)知識(shí)點(diǎn),這個(gè)知識(shí)點(diǎn)不掌握,后面將寸步難行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1661

    瀏覽量

    31879
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61969
  • Open
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    11055
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Fatfs文件系統(tǒng)函數(shù)f_open打開文件,stdio庫的fopen函數(shù)不能打開

    如題:Fatfs文件系統(tǒng)問題,文件系統(tǒng)函數(shù)f_open打開文件,stdio庫的fopen
    發(fā)表于 01-24 07:24

    請問f_open函數(shù)打開文件失敗后要調(diào)用f_close關(guān)閉文件嗎?

    f_open函數(shù)打開文件失敗后要不要調(diào)用f_close關(guān)閉文件呢?
    發(fā)表于 03-23 23:27

    Labview 打開/創(chuàng)建/替換文件函數(shù) 操作open文件沒有打開

    Labview 打開/創(chuàng)建/替換文件函數(shù) 操作open文件沒有打開,去掉關(guān)閉
    發(fā)表于 04-11 09:05

    請問在DFS上打開文件open操作返回-19是怎么回事?

    dfs上使用elm文件系統(tǒng)+spi flash 打開文件 open 操作返回 -19int fd = o
    發(fā)表于 02-07 11:02

    源碼-用對(duì)象打開Excel文件例程

    易語言是一門以中文作為程序代碼編程語言學(xué)習(xí)例程:易語言-源碼-用對(duì)象打開Excel文件例程
    發(fā)表于 06-06 17:43 ?5次下載

    C語言函數(shù)返回1和返回0到底哪個(gè)好?

    可能會(huì)比較復(fù)雜,不同的輸入,常常產(chǎn)生不同的輸出結(jié)果。 1C語言函數(shù)返回值 C語言函數(shù)可以通過返回值表示輸出結(jié)果,例如 log() 函數(shù)
    的頭像 發(fā)表于 04-22 09:47 ?2615次閱讀

    C語言程序開發(fā)中關(guān)于函數(shù)返回值的問題

    C語言函數(shù)可以通過返回值表示輸出結(jié)果,例如 log() 函數(shù)返回值會(huì)根據(jù)不同的輸入,返回不同的值。再比如,我們定義一個(gè)
    發(fā)表于 09-06 10:01 ?889次閱讀

    網(wǎng)絡(luò)工程師學(xué)Python-文件打開

    在Python中,可以使用open()內(nèi)置函數(shù)打開文件,以執(zhí)行一系列文件的操作。在本文中,將介紹Python中
    的頭像 發(fā)表于 04-27 09:14 ?560次閱讀

    python創(chuàng)建文件對(duì)象

    2.1. 創(chuàng)建文件對(duì)象 **open() 函數(shù)用于創(chuàng)建文件對(duì)象,基本語法格式如下:**
    的頭像 發(fā)表于 06-21 17:19 ?1395次閱讀
    python創(chuàng)建<b class='flag-5'>文件</b><b class='flag-5'>對(duì)象</b>

    python中如何保存文件

    在Python中,可以使用多種方式來保存文件。以下是一些常見的方法: 使用內(nèi)置的open()函數(shù)open()函數(shù)用于
    的頭像 發(fā)表于 11-24 09:32 ?973次閱讀

    linuxvi無法打開寫入文件

    -l 命令來查看文件權(quán)限,通過 chmod 命令來修改權(quán)限。例如,使用 chmod +rw filename 命令將文件的讀寫權(quán)限添加給當(dāng)前用戶。 文件不存在:如果你嘗試
    的頭像 發(fā)表于 11-28 15:10 ?2573次閱讀

    嵌入式open函數(shù)的使用

    使用的一個(gè)重要函數(shù),用于打開一個(gè)文件或設(shè)備,返回一個(gè)文件描述符,開發(fā)者可以通過該
    的頭像 發(fā)表于 01-04 15:51 ?469次閱讀

    python中open函數(shù)的用法詳解

    python中open函數(shù)的用法詳解 Python中的open()函數(shù)用于打開文件。它接受
    的頭像 發(fā)表于 01-30 15:31 ?1506次閱讀

    一個(gè)進(jìn)程內(nèi)多次使用open打開同一個(gè)文件,可以嗎?

    當(dāng)一個(gè)進(jìn)程內(nèi)多次使用 open 打開同一個(gè)文件時(shí),每次都會(huì)得到一個(gè)新的文件描述符(file descriptor)。
    的頭像 發(fā)表于 02-27 13:54 ?984次閱讀

    鴻蒙開發(fā)文件管理:【@ohos.document (文件交互)】

    通過文件管理器選擇文件,異步返回文件URI,使用promise形式返回結(jié)果。
    的頭像 發(fā)表于 06-11 17:51 ?327次閱讀
    鴻蒙開發(fā)<b class='flag-5'>文件</b>管理:【@ohos.document (<b class='flag-5'>文件</b>交互)】