初学Python的过程中遇到With,例如:
with open("/tmp/foo.txt") as file:
data = file.read()
这让我想起了C#里面的Using:
using (FileStream fs = new FileStream("test.txt", FileMode.Create))
{
//将字符串写入文件
fs.Write(bytesToWrite, 0, bytesToWrite.Length);
}
这两者有异曲同工的地方是:无论Using或With下执行的语句出现什么错误,这一段代码使用的资源都会被系统自动回收关闭。
简而言之,以上述功能为例:打开文件后,对文件进行读/写操作,万一这过程中出现问题,文件都会被回收释放,而不会卡在那里。
with的作用:
使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。
例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法
使用格式:
with context_expression [as target(s)]:
with-body
实例:
with open(r'fileName') as myfile:
for line in myfile:
print line
# ...Todo