我喜欢使用 with 语句来访问文件和数据库连接,因为它会自动帮我关闭连接,以防出现错误或文件关闭。
f = open('file.txt', 'r')
for i in f():
print(i)
f.close()
对比
with open('file.txt', 'r') as f:
for i in f:
print(i)
以下有没有读取相机缓冲区的等效重述方式?
c = cv.VideoCapture(0)
while(1):
_,f = c.read()
cv.imshow('e2',f)
if cv.waitKey(5)==27:
cv.waitKey()
break
c.release()
我尝试过:
c = cv.VideoCapture(0)
while(1):
with c.read() as _,f:
cv.imshow('e2',f)
if cv.waitKey(5)==27:
cv.waitKey()
break
——但是没有成功。看起来拆除/释放是一种不同的功能。这里是否可以使用该习语?
context_manager
的工作原理。如果你使用return
代替yield
,那么cap.release()
将会立即被调用,而不是在with
语句结束时才被调用。 - Eric