[英]what does the 'with' function in python do?
我有一個python腳本,讀取.csv文件,適用於Python 2.7,但在Python 2.4上打破。 拋出的錯誤就行了
with open(sys.argv[1], 'rb') as csvfile:
就在這里,它給了我一個語法錯誤,所以我的問題是'與'做什么(或者這可能會導致2.4中的語法錯誤)。 我無法在任何地方找到關於此功能的文檔,部分原因是它的通用名稱。
您正在查看上下文管理器; 相關文檔,這是一個更容易搜索的術語。
添加該功能的原始提議PEP-343詳細描述了上下文管理器。
datamodel文檔描述了上下文管理器的用途 。 上下文管理器有.__enter__()
和.__exit__()
方法。
with
語句本身在參考文檔中記錄為復合語句 。
對於文件對象, File對象文檔(標准類型文檔的一部分)描述了大多數文件對象可以用作上下文管理器。
具體來說,對於文件,您要查找的相關部分是使用file.close()
方法記錄的 ,因為這是上下文管理器.__exit__()
方法對文件的作用:關閉文件,無論發生什么。
將其轉換為不支持with
語句的舊Python版本,這意味着您必須手動關閉文件,使用try:
finally:
組合:
csvfile = open(sys.argv[1], 'rb')
try:
# do things with csvfile
finally:
csvfile.close()
這可確保csvfile
在其他任何情況下正確關閉。
在打開文件的具體情況下,它實現了以下功能:
cvsfile = open(sys.argv[1], 'rb')
try:
...
finally:
cvsfile.close()
的Python 2.5和更高版本允許使用表達式中的對象with
( 上下文管理器 )來定義它們是如何進入的背景下,離開它。 離開時,文件將被關閉with
,鎖將被解鎖,等等。
PEP 343介紹了with
仍然是一個相當有價值的信息讀取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.