国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

河源城鄉(xiāng)規(guī)劃建設(shè)局網(wǎng)站軟文新聞發(fā)布網(wǎng)站

河源城鄉(xiāng)規(guī)劃建設(shè)局網(wǎng)站,軟文新聞發(fā)布網(wǎng)站,網(wǎng)站分級怎么做,彩票網(wǎng)站鏈接怎么做1. with語句的使用 基礎(chǔ)班向文件中寫入數(shù)據(jù)的示例代碼: # 1、以寫的方式打開文件f open("1.txt", "w")# 2、寫入文件內(nèi)容f.write("hello world")# 3、關(guān)閉文件f.close()代碼說明: 文件使用完后必須關(guān)閉,因?yàn)槲募ο髸加貌僮飨到y(tǒng)…

1. with語句的使用

基礎(chǔ)班向文件中寫入數(shù)據(jù)的示例代碼:

 # 1、以寫的方式打開文件f = open("1.txt", "w")# 2、寫入文件內(nèi)容f.write("hello world")# 3、關(guān)閉文件f.close()

代碼說明:

  • 文件使用完后必須關(guān)閉,因?yàn)槲募ο髸加貌僮飨到y(tǒng)的資源,并且操作系統(tǒng)同一時(shí)間能打開的文件數(shù)量也是有限的

這種寫法可能出現(xiàn)一定的安全隱患,錯誤代碼如下:

 # 1、以讀的方式打開文件f = open("1.txt", "r")# 2、讀取文件內(nèi)容f.write("hello world")# 3、關(guān)閉文件f.close()

運(yùn)行結(jié)果:

Traceback (most recent call last):File "/home/python/Desktop/test/xxf.py", line 4, in <module>f.write("hello world")
io.UnsupportedOperation: not writable

代碼說明:

  • 由于文件讀寫時(shí)都有可能產(chǎn)生IOError,一旦出錯,后面的f.close()就不會調(diào)用。
  • 為了保證無論是否出錯都能正確地關(guān)閉文件,我們可以使用try ... finally來解決

安全寫法, 代碼如下:

try:# 1、以讀的方式打開文件f = open("1.txt", "r")# 2、讀取文件內(nèi)容f.write("xxxxx")except IOError as e:print("文件操作出錯", e)finally:# 3、關(guān)閉文件f.close()

運(yùn)行結(jié)果:

文件操作出錯 not writable

這種方法雖然代碼運(yùn)行良好,但是缺點(diǎn)就是代碼過于冗長,并且需要添加try-except-finally語句,不是很方便,也容易忘記.

在這種情況下,Python提供了 with 語句的這種寫法,既簡單又安全,并且 with 語句執(zhí)行完成以后自動調(diào)用關(guān)閉文件操作,即使出現(xiàn)異常也會自動調(diào)用關(guān)閉文件操作。

with 語句的示例代碼:

# 1、以寫的方式打開文件
with open("1.txt", "w") as f:# 2、讀取文件內(nèi)容f.write("hello world")

2. 上下文管理器

一個(gè)類只要實(shí)現(xiàn)了__enter__()和__exit__()這個(gè)兩個(gè)方法,通過該類創(chuàng)建的對象我們就稱之為上下文管理器。

上下文管理器可以使用 with 語句,with語句之所以這么強(qiáng)大,背后是由上下文管理器做支撐的,也就是說剛才使用 open 函數(shù)創(chuàng)建的文件對象就是就是一個(gè)上下文管理器對象。

自定義上下文管理器類,模擬文件操作:

定義一個(gè)File類,實(shí)現(xiàn)?__enter__() 和 __exit__()方法,然后使用 with 語句來完成操作文件, 示例代碼:

class File(object):# 初始化方法def __init__(self, file_name, file_model):# 定義變量保存文件名和打開模式self.file_name = file_nameself.file_model = file_model# 上文方法def __enter__(self):print("進(jìn)入上文方法")# 返回文件資源self.file = open(self.file_name,self.file_model)return self.file# 下文方法def __exit__(self, exc_type, exc_val, exc_tb):print("進(jìn)入下文方法")self.file.close()if __name__ == '__main__':# 使用with管理文件with File("1.txt", "r") as file:file_data = file.read()print(file_data)

運(yùn)行結(jié)果:

進(jìn)入上文方法
hello world
進(jìn)入下文方法

代碼說明:

  • __enter__表示上文方法,需要返回一個(gè)操作文件對象
  • __exit__表示下文方法,with語句執(zhí)行完成會自動執(zhí)行,即使出現(xiàn)異常也會執(zhí)行該方法。

3. 上下文管理器的另外一種實(shí)現(xiàn)方式

假如想要讓一個(gè)函數(shù)成為上下文管理器,Python 還提供了一個(gè) @contextmanager 的裝飾器,更進(jìn)一步簡化了上下文管理器的實(shí)現(xiàn)方式。通過 yield 將函數(shù)分割成兩部分,yield 上面的語句在?__enter__?方法中執(zhí)行,yield 下面的語句在?__exit__?方法中執(zhí)行,緊跟在 yield 后面的參數(shù)是函數(shù)的返回值。

# 導(dǎo)入裝飾器
from contextlib import contextmanager# 裝飾器裝飾函數(shù),讓其稱為一個(gè)上下文管理器對象
@contextmanager
def my_open(path, mode):try:# 打開文件file = open(file_name, file_mode)# yield之前的代碼好比是上文方法yield fileexcept Exception as e:print(e)finally:print("over")# yield下面的代碼好比是下文方法file.close()# 使用with語句
with my_open('out.txt', 'w') as f:f.write("hello , the simplest context manager")
http://aloenet.com.cn/news/35108.html

相關(guān)文章:

  • 動態(tài)網(wǎng)站開發(fā)參考資料google建站推廣
  • 自己建的網(wǎng)站可以用筆記本做服務(wù)器嗎sem專員
  • 泗洪網(wǎng)站設(shè)計(jì)公司ip域名查詢網(wǎng)站入口
  • 抖音代運(yùn)營排名seo公司排行
  • 主流網(wǎng)站風(fēng)格精品成品網(wǎng)站入口
  • 網(wǎng)站開發(fā)實(shí)訓(xùn)報(bào)告參考文獻(xiàn)國內(nèi)真正的永久免費(fèi)建站
  • 免費(fèi)看電影的網(wǎng)站是什么快速收錄網(wǎng)
  • 怎樣做網(wǎng)站開發(fā)搜索優(yōu)化seo
  • 網(wǎng)站站長統(tǒng)計(jì)代碼百度風(fēng)云搜索榜
  • 蘇州專業(yè)做網(wǎng)站公司有哪些如何進(jìn)行電子商務(wù)網(wǎng)站推廣
  • 高端做網(wǎng)站做網(wǎng)站要多少錢
  • wordpress網(wǎng)站服務(wù)器深圳市seo點(diǎn)擊排名軟件價(jià)格
  • 河北通信建設(shè)有限公司網(wǎng)站搜索引擎優(yōu)化什么意思
  • 上海網(wǎng)站設(shè)計(jì)服務(wù)商長尾詞挖掘免費(fèi)工具
  • 網(wǎng)站開發(fā)論文需要寫什么windows優(yōu)化大師怎么使用
  • wordpress短視頻主題上海整站seo
  • 兼職做調(diào)查哪個(gè)網(wǎng)站好溫州seo公司
  • 成都 高端網(wǎng)站建設(shè)如何制作網(wǎng)頁最簡單的方法
  • 網(wǎng)站設(shè)計(jì)如何收費(fèi)上海專業(yè)網(wǎng)絡(luò)推廣公司
  • 公司網(wǎng)站自己可以做嗎外包項(xiàng)目接單平臺
  • 怎么添加網(wǎng)站百度網(wǎng)盤下載電腦版官方下載
  • 建商城網(wǎng)站如何去推廣一個(gè)app
  • 上海著名網(wǎng)站設(shè)計(jì)公司網(wǎng)絡(luò)營銷品牌
  • 微網(wǎng)站 微官網(wǎng)的區(qū)別嗎最近的新聞大事10條
  • 深色大氣網(wǎng)站模板電腦培訓(xùn)學(xué)校學(xué)費(fèi)多少
  • web網(wǎng)站開發(fā)的基本流程產(chǎn)品運(yùn)營方案
  • php網(wǎng)站怎么做測試工具上海網(wǎng)站建設(shè)開發(fā)
  • 網(wǎng)站頂部展出的大幅廣告推廣網(wǎng)站源碼
  • 廣州專業(yè)的網(wǎng)站建設(shè)青島建站seo公司
  • 想象力做網(wǎng)站十大免費(fèi)最虧的免費(fèi)app