色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

open函數-打開文件并返回文件對象

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

1. open() 函數的作用

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

open的中文釋義是打開。

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

【返回值】

open函數返回的是一個文件對象。

2. open函數語法參考

open 函數語法如下:

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

file[fa?l]:文件。

mode[m??d]:模式。

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

errors[?er?z]:錯誤。

none [n?n]:沒有。

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

3. open()函數參數說明

1. file參數

file[fa?l]:文件。

file 是必需參數。

參數file 表示要打開文件的路徑。

路徑可以是絕對路徑,也可以是相對路徑。

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

相對路徑是針對當前文件夾這一參考對象,來描述文件路徑的形式。

參考《68.Python的相對路徑》。

2. encoding 參數

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

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

為了避免程序報錯或者讀取到的內容出現亂碼,需要把 encoding 設置為 'utf-8',即寫為 encoding='utf-8'。

編碼的詳細知識,以后在做詳細介紹。

3. errors參數

errors 參數表示讀寫文件時碰到錯誤的報錯級別。

strict [str?kt]:嚴格的。

strict:嚴格級別。字符編碼有報錯即拋出異常。也是默認級別,errors 參數值傳入None 即按此級別拋出異常。

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

ignore:忽略級別。字符編號有錯誤,忽略掉。

推薦errors參數的取值為'ignore',表示在遇到編碼錯誤時忽略該錯誤,程序會繼續執行,不會退出。

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

replace:替換級別,字符編碼有錯的,替換成?。

4. mode參數

mode[m??d]:模式。

mode 是可選參數。

參數mode決定了打開文件的模式。

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

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

b:以二進制文件文件模式打開文件。

w:以只寫模式打開文件,不能讀內容。如果文件不存在,則創建文件;如果文件存在,則覆蓋文件的內容。

x:以獨占創建模式打開文件,如果文件不存在,則創建并以寫入模式打開;如果文件已存在,則引發FileExistsError異常。

a:以追加模式打開文件,不能讀內容。如果文件不存在,則創建文件;如果文件存在,則在文件末尾追加。

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

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

圖片

69-1mode模式

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

【溫馨提示】

參數 mode 可以不寫,不寫時mode默認值為r,即只讀模式。

4. mode參數詳解

1. 準備工作

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

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

圖片

69-2

硬盤中的目錄如下所示:

圖片

69-3

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

【備注】

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

2. w 寫入模式

w:以只寫模式打開文件,不能讀內容。如果文件不存在,則創建文件;如果文件存在,則覆蓋文件的內容。

【語法解析】

  1. 文件不存在,則創建文件。
  2. 文件存在,則覆蓋文件的內容。

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

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

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

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

【代碼解析】

f 是變量名,接收open 函數返回的文件對象;

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

"成績2.txt"是文件的相對路徑。

w表示只寫模式。

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

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

不存在則新建一個文件。

因此,運行代碼后我們觀察資源管理器目錄或者69文件夾,我們發現多了成績1.txt成績2.txt2個文件。

圖片

69-4

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

【課堂練習】

修改路徑參數,用絕對路徑的方法在桌面新建一個名為測試.txt的文件。

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

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

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

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

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

運行上面的代碼,程序報錯。

程序報錯,我們首先考慮路徑參數轉義字符問題。

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

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

運行代碼后,我們發現程序能夠正常運行。

我們查看電腦桌面,發現電腦桌面多了一個名為測試.txt的文件。

但我們發現增加斜桿的方法實在太麻煩,那有沒有其它簡便的方法呢?

其實我們可以通過在路徑參數前面加上一個字母r/R,這時候就不需要使用反斜桿進行轉義了。

【路徑參數前增加一個r】

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

【路徑參數前增加一個R】

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

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

我們繼續講解w模式的如果文件存在,則覆蓋文件的內容。

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

那如果文件存在,則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函數返回的文件對象。

"成績1.txt"是open函數的file參數,表示文件的相對路徑;

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

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

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

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

【將內容寫入文件的語法】

f.write(obj)

f 是文件對象,就是一個變量名,你可以自己命名。

文件對象后緊跟一個英文小圓點.

write是方法名。

obj為要寫入的內容,這里要寫入的內容是張三,90分

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

圖片

69-5

【關閉文件語法】

f.close( )

f 是變量名,接收open函數返回的文件對象。

文件對象后緊跟一個英文小圓點.

close是方法名。

【溫馨提示】

大家在Python中操作文件時,注意讀寫完畢后都要進行關閉。這根我們日常生活中的操作是一樣的,不關閉文件,我們是沒辦法對文件進行刪除的。

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

【覆蓋文件的內容】

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

下面的代碼要實現的功能是將李四,60分寫入文件成績1.txt

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

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

圖片

69-6

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

【知識回顧】

w:以只寫模式打開文件,不能讀內容。如果文件不存在,則創建文件;如果文件存在,則覆蓋文件的內容。

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

我們可以采用追加模式。

3. a 追加模式

a:以追加模式打開文件,不能讀內容。如果文件不存在,則創建文件;如果文件存在,則在文件末尾追加。

a追加模式w只寫模式的區別在于追加模式保留原有內容,只寫模式覆蓋原有內容。

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

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

圖片

69-7

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

但大家發現我們寫入的內容和原本的內容之間沒有符號作為間隔,不方便我們觀看。那該如何修改呢?

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

\\n可以實現換行功能:

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

輸入后如下圖所示:

圖片

69-8

【轉義字符】

圖片

69-9轉義字符

【備注】上圖來源于《風變編程》。

4. r 只讀模式

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

只能打開已經存在的文件。

如果文件不存在,程序不會創建新的文件,會報錯。

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()

運行上述的代碼,成績1.txt文件其實已被我們成功打開。

但Python中的打開和我們日常生活中的打開不是一個含義。

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

Python中的打開,其實就是得到一個文件對象,方便我們后續操作文件,這個文件對象我們肉眼是看不見的。

有時候我們并不需要對文件進行寫的操作,我們只需要打開文件即只讀模式,此時我們的第二個參數mode 就為r,注意,r也可以不寫。

mode 參數就講解到這里,剩下的模式將不再進行贅述。

5. 總結

1. 代碼總結

# 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")

# 關閉文件
f.close()

2. 路徑的轉義

絕對路徑參數前面加上一個字母r/R,這時候就不需要使用反斜桿進行轉義了。

3. mode模式

w:以只寫模式打開文件,不能讀內容。如果文件不存在,則創建文件;如果文件存在,則覆蓋文件的內容。

a:以追加模式打開文件,不能讀內容。如果文件不存在,則創建文件;如果文件存在,則在文件末尾追加。

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

4. 圖片總結

圖片

69-10. open函數

【溫馨提示】

如果初學者在本節的代碼遇到報錯,基本是file路徑參數的錯誤,建議大家回看相對路徑的相關知識,相對路徑是非常重要的一個知識點,這個知識點不掌握,后面將寸步難行。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 參數
    +關注

    關注

    11

    文章

    1829

    瀏覽量

    32195
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62573
  • Open
    +關注

    關注

    0

    文章

    16

    瀏覽量

    11073
收藏 人收藏

    評論

    相關推薦

    飛凌嵌入式ElfBoard ELF 1板卡-通用文件I/O模型之open

    為相應的文件系統操作,或者設備驅動程序操作。接下來我們一起了解一下open()函數。open()函數可以
    發表于 10-10 09:09

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡 -通用文件I/O模型之open

    為相應的文件系統操作,或者設備驅動程序操作。接下來我們一起了解一下open()函數。 open()函數可以
    發表于 10-11 08:56

    Fatfs文件系統函數f_open打開文件,stdio庫的fopen函數不能打開

    如題:Fatfs文件系統問題,文件系統函數f_open打開文件,stdio庫的fopen
    發表于 01-24 07:24

    Labview 打開/創建/替換文件函數 操作open文件沒有打開

    Labview 打開/創建/替換文件函數 操作open文件沒有打開,去掉關閉
    發表于 04-11 09:05

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

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

    源碼-用對象打開Excel文件例程

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

    C語言程序開發中關于函數返回值的問題

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

    網絡工程師學Python-文件打開

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

    python創建文件對象

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

    python中如何保存文件

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

    linuxvi無法打開寫入文件

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

    嵌入式open函數的使用

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

    python中open函數的用法詳解

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

    一個進程內多次使用open打開同一個文件,可以嗎?

    當一個進程內多次使用 open 打開同一個文件時,每次都會得到一個新的文件描述符(file descriptor)。
    的頭像 發表于 02-27 13:54 ?1264次閱讀

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

    通過文件管理器選擇文件,異步返回文件URI,使用promise形式返回結果。
    的頭像 發表于 06-11 17:51 ?452次閱讀
    鴻蒙開發<b class='flag-5'>文件</b>管理:【@ohos.document (<b class='flag-5'>文件</b>交互)】
    主站蜘蛛池模板: 亚洲乱亚洲乱妇13p| 亚洲国产精品无码中文在线| 亚洲成人免费| bl高h乱肉辣文| 精品亚洲一区二区三区在线播放| 妙玉被肉干高H潮文| 亚洲免费黄色| 粉嫩自拍 偷拍 亚洲| 男女疯狂一边摸一边做羞羞视频| 亚洲 无码 制服 日韩| 99手机在线视频| 久久精品电影久久电影大全| 天天久久影视色香综合网| 99久久国语露脸精品国产| 黄页免费观看| 台湾佬综合娱乐网| xxxxhd17欧美老师| 邻家美姨在线观看全集免费| 亚洲国产精品无码2019| 国产爱豆果冻传媒在线观看视频 | 小草视频免费观看在线| va亚洲va天堂va视频在线| 蜜柚免费视频高清观看在线| 一区三区三区不卡| 狠狠鲁快播| 亚洲欧美色综合影院| 国产午夜伦伦伦午夜伦| 翁止熄痒禁伦短文合集免费视频| 波野结衣qvod| 日韩精品一区二区亚洲AV观看 | 最近2019年日本中文免费字幕| 日本一本免费线观看视频 | 女人高潮了拔出来了她什么感觉| 在线播放真实国产乱子伦| 久久4k岛国高清一区二区| 亚洲精品无码不卡在线播放he| 国产偷国产偷亚洲高清人乐享 | 中文字幕乱码一区久久麻豆樱花 | 看全色黄大色大片免费久黄久| 中文字幕亚洲第一页| 免费A级毛片无码无遮挡|