当使用完一个资源后,需要手动的关闭它,比如操作文件、建立数据库连接等。但是在使用资源的过程中,如果遇到异常,很可能错误被直接抛出,导致来不及关闭资源。
try:
file = open("test.txt", "a+")
file.write("hello,python\n")
finally:
file.close()
Python提供了with语句语法,来构建对资源创建与释放的过程,with是一个新关键词,并且总是伴随着上下文管理器出现,功能同上面的"try-finally"一样,代码更加简洁
with open("test.txt", "a+") as file:
file.write("hello,with as")
with语句后面跟着open()方法,如果它有返回值的话,可以使用as’语句将其赋值给file,"as"是另一个关键词,指代open函数的返回值。在with语句块退出时,close()方法自动调用,即使write()出现异常,也能确保close()方法被调用。
#with...as...语句结束时,自动调用f.close()
#a表示:在文件末尾追加
def write_txt_file(path, txt): # 写文件
with open(path, 'a', encoding='gbk') as f:
return f.write(txt)
#每次运行程序前,需要删除上一次的文件
#默认字符编码为GBK
def read_txt_file(path):
with open(path, 'r', encoding='gbk') as f:
return f.read()