麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Python文件操作步驟示例

Python文件操作步驟示例

來源:千鋒教育
發布人:xqq
時間: 2023-11-07 11:17:09 1699327029

我們來讀取這樣一個文本文件:song.txt,該文件的字符編碼為utf-8。

匆匆那年我們究竟說了幾遍再見之后再拖延

可惜誰有沒有愛過不是一場七情上面的雄辯

匆匆那年我們一時匆忙撂下難以承受的諾言

只有等別人兌現

1.菜鳥實現(只是實現功能):

python3實現:

#第一步:(以只讀模式)打開文件

f=open('song.txt','r',encoding='utf-8')

#第二步:讀取文件內容

print(f.read())

#第三步:關閉文件

f.close()

這里說下Python2的實現

#第一步:(以只讀模式)打開文件

f=open('song.txt','r')

#第二步:讀取文件內容

print(f.read().decode('utf-8'))

#第三步:關閉文件

f.close()

說明:

Python3中已經內置對Unicode的支持,字符串str已經是真正的Unicode字符串。也就是說Python3中的文件讀取方法已經自動完成了解碼處理,因此無需再手動進行解碼,可以直接將讀取的文件中的內容進行打印;Python2中的字符串str是字節串,讀取文件得到的也是字節串,在打印之前應該手動將其解碼成Unicode字符串。關于這部分的說明,可以參考之前這篇文章<<再談Python中的字符串與字符編碼>>。

2.中級實現

在實現基本功能的前提下,考慮一些可能的意外因素。因為文件讀寫時都有可能產生IO錯誤(IOError),一旦出錯,后面包括f.close()在內的所有代碼都不會執行了。因此我們要保證文件無論如何都能被關閉。那么可以用try...finally來實現,這實際上就是try...except..finally的簡化版(我們只用Python3來進行示例演示):

f=''

try:

f=open('song.txt','r',encoding='utf-8')

print(f.read())

num=10/0

finally:

print('>>>>>>finally')

iff:

f.close()

輸出結果:

匆匆那年我們究竟說了幾遍再見之后再拖延

可惜誰有沒有愛過不是一場七情上面的雄辯

匆匆那年我們一時匆忙撂下難以承受的諾言

只有等別人兌現

>>>>>>finally

Traceback(mostrecentcalllast):

File"",line4,in

ZeroDivisionError:divisionbyzero

輸出結果說明,盡管with代碼塊中出現了異常,但是”>>>>>>finally“信息還是被打印了,說明finally代碼塊被執行,即文件關閉操作被執行。但是結果中錯誤信息還是被輸出了,因此還是建議用一個完成的try...except...finally語句對異常信息進行捕獲和處理。

3.最佳實踐

為了避免忘記或者為了避免每次都要手動關閉文件,我們可以使用with語句(一種語法糖,語法糖語句通常是為了簡化某些操作而設計的)。with語句會在其代碼塊執行完畢之后自動關閉文件。因此我們可以這樣來改寫上面的程序:

withopen('song.txt','r',encoding='utf-8')asf:

print(f.read())

print(f.closed)

輸出結果:

匆匆那年我們究竟說了幾遍再見之后再拖延

可惜誰有沒有愛過不是一場七情上面的雄辯

匆匆那年我們一時匆忙撂下難以承受的諾言

只有等別人兌現

True

是不是變得簡介多了,代碼結構也比較清晰了。with之后打印的f.closed屬性值為True,說明文件確實被關閉了。

思考:

with語句會幫我們自動處理異常信息嗎?

要回答這個問題就要提到“上下文管理器”和with語句的工作流程。

with語句不僅僅可以用于文件操作,它實際上是一個很通用的結構,允許使用所謂的上下文管理器(contextmanager)。上下文管理器是一種支持__enter__()和__exit__()這兩個方法的對象。__enter__()方法不帶任何參數,它在進入with語句塊的時候被調用,該方法的返回值會被賦值給as關鍵字之后的變量。__exit__()方法帶有3個參數:type(異常類型),value(異常信息),trace(異常棧),當with語句的代碼塊執行完畢或執行過程中因為異常而被終止都會調用__exit__()方法。正常退出時該方法的3個參數都為None,異常退出時該方法的3個參數會被分別賦值。如果__exit__()方法返回值(真值測試結果)為True則表示異常已經被處理,命令執行結果中就不會拋出異常信息了;反之,如果__exit__()方法返回值(真值測試結果)為False,則表示異常沒有被處理并且會向外拋出該異常。

現在我們應該明白了,異常信息會不會被處理是由with后的語句返回對象的__exit__()方法決定的。文件可以被用作上下文管理器。它的__enter__方法返回文件對象本身,__exit__方法會關閉文件并返回None。我們看下file類中關于這兩個方法的實現:

def__enter__(self):#realsignatureunknown;restoredfrom__doc__

"""__enter__()->self."""

returnself

def__exit__(self,*excinfo):#realsignatureunknown;restoredfrom__doc__

"""__exit__(*excinfo)->None.Closesthefile."""

pass

可見,file類的__exit__()方法的返回值為None,None的真值測試結果為False,因此用于文件讀寫的with語句代碼塊中的異常信息還是會被拋出來,需要我們自己去捕獲并處理。

withopen('song.txt','r',encoding='utf-8')asf:

print(f.read())

num=10/0

輸出結果:

匆匆那年我們究竟說了幾遍再見之后再拖延

可惜誰有沒有愛過不是一場七情上面的雄辯

匆匆那年我們一時匆忙撂下難以承受的諾言

只有等別人兌現

Traceback(mostrecentcalllast):

File"",line3,in

ZeroDivisionError:divisionbyzero

注意:上面所說的__exit__()方法返回值(真值測試結果)為True則表示異常已經被處理,指的是with代碼塊中出現的異常。它對于with關鍵字之后的代碼中出現的異常是不起作用的,因為還沒有進入上下文管理器就已經發生異常了。因此,無論如何,還是建議在必要的時候在with語句外面套上一層try...except來捕獲和處理異常。

有關“上下文管理器”這個強大且高級的特性的更多信息,請參看Python參考手冊中的上下文管理器部分。或者可以在Python庫參考中查看上下文管理器和contextlib部分。

以上內容為大家介紹了Python文件操作步驟示例,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 免费v片在线观看| 亚洲午夜久久久久久噜噜噜 | 欧美人善交videosg| 欧美巨大黑人精品videos| 91精品国产综合久久青草| 国产免费久久精品99久久| 故意打开双腿让翁公看| 菠萝蜜视频网在线www| 老子影院午夜伦手机电影 | 国产精品国产三级国产普通话a| 你是我的女人中文字幕高清| 日本黄色网战| 美女扒开屁股让男人桶| 向日葵视频app免费下载| 国产三级在线观看完整版| 国产综合久久久久| 波多野结衣痴汉| 久久久无码精品亚洲日韩按摩| 国产区图片区小说区亚洲区| 免费做暖1000视频日本| 香港台湾日本三级纶理在线视| 羞羞歪歪| 欧美成人在线免费观看| 妞干网最新| 大陆三级特黄在线播放| 美女被免费视频网站| 午夜精品久久久久久久99热| а√天堂中文最新版地址| 日韩日韩日韩日韩日韩| 含羞草实验研所入口| 国产网曝门| 网曝门精品国产事件在线观看| 好男人好资源在线| 亚洲成a人片在线观看中文| 黑人干| 成年人午夜影院| 久久99精品国产自在现线小黄鸭| 国产精品无码久久久久| 美国十次导航| 色老太bbw| 欧美三级在线免费观看|