[英]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.