错误读取文件
# 打开文件
f = open('file.txt')
for line in f:
# 读取文件内容 执行其他操作
# do_something...
# 关闭文件
f.close()
java思维读取文件
f = open('file.txt')
try:
for line in f:
# 读取文件内容 执行其他操作
# do_something...
finally:
# 保证关闭文件
f.close()
使用with读取文件
with open('file.txt') as f:
for line in f:
# do_something...
上下文管理器语法
with context_expression [as target(s)]:
 with-body
一个类在 Python 中,只要实现以下方法,就实现了「上下文管理器协议」:
enter:在进入 with 语法块之前调用,返回值会赋值给 with 的 target
exit:在退出 with 语法块时调用,一般用作异常处理
contextlib模块可简化上下文管理器协议
from contextlib import contextmanager
@contextmanager
def test():
print('before')
yield 'hello'
print('after')
with test() as t:
print(t)
# Output:
# before
# hello
# after
网友评论