python中的withas
① python中with語句的作用
with語句相當於你定義一個類的時候定義了__enter__()和__exit__()這個兩個方法。
在我們進行文件操作的的時候會用到open方法,後面有了with open以後就不再只使用open方法了,為什麼?因為with open方法簡單,我們不用再去管關閉文件了,即使中間發生異常,with open也會幫我們把文件關閉掉,以下示例演示下with open方法;
class File(object):
"""文件操作類"""
def __init__(self, filepath, mode):
self.filepath = filepath
self.mode = mode
def __enter__(self):
"""打開文件"""
self.file = open(self.filepath, self.mode)
print("打開文件")
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
"""關閉文件"""
print("關閉文件")
self.file.close()
if __name__ == '__main__':
with File('log.log', 'r') as file:
file.write("家啊")
可以看出來有了__enter__()和__exit__(),我們自定義的類也可以使用with了
② python中with是什麼意思
關鍵字
with 的一般執行過程
一段基本的 with 表達式,其結構是這樣的:
with EXPR as VAR:
BLOCK
其中: EXPR 可以是任意表達式; as VAR 是可選的。
③ mysql 中能使用with as 嗎
with as 是 python 的語法 如下:
比較繁瑣 也失去了 python 語言本身的優雅
mysql 裡面並沒有類似的用法
④ python里的with open(file name) as file obj是什麼意思
就是打開一個文件並聲明變數file obj 接收打開後的文件對象,同時with語句塊會在程序結束時候自動關閉打開的文件句柄,不會造成內存存泄露之後的問題
大概等效於
try:
file_obj = open(file_name)
#with裡面你寫的代碼
except Exception:
raise Exception
finally:
if file_obj :
file_obj.close()
⑤ Python with as為什麼無法捕獲異常
with在打開文件的這個操作中的作用是保證每次正常打開文件後,不論遇到什麼,最後都會執行文件的關閉操作,避免腳本中遺漏。但是他自身並沒有抓取異常的處理機制。
with open("asdasdas") as a:
print("打開成功")
do_something()
這段代碼的含義,相當於打開了文件「asdasdas」後列印了「打開成功」的字樣後,又處理了do_something()這段邏輯。不論do_something()這段邏輯正常執行結束,還是拋出異常,都會保證最終「asdasdas」這個文件都會被關閉。避免因為文件未被關閉而導致的種種問題。
你的代碼可以改為以下部分,這樣就可以catch到讀取文件中的異常了。
try:
with open("asdasdas") as a:
print("打開成功")
except:
print("打開失敗")
⑥ python with語句能不能把後面的"as <file>"刪掉
不能去掉as file
因為打開文件要給文件綁定一個對象,也就是文件句柄,這個as xxx 就是那個文件句柄。
如果不加,就會有錯誤發生
⑦ python with函數怎麼用
with在python中並不是函數,是一個關鍵詞語句,比如if就是關鍵詞語句。
with大多用來打開一個文檔。
比如:
with open('test.txt') as f:
f.read()
這樣就可以讀取名為test的文檔里的內容,並且使用with語句不需要我們手動再調用文件的close()方法來關閉文件,如果test.txt文檔對象不再被使用,with會自動關閉文檔。比較智能一點。