关闭文件 | Python从入门到精通:高阶篇之四十五-阿里云开发者社区

开发者社区> Python学习站> 正文

关闭文件 | Python从入门到精通:高阶篇之四十五

简介: 本节介绍了关闭文件的两种方法:close()和with ... as 。

打开文件 | Python从入门到精通:高阶篇之四十四

关于文件的读、写操作,保存,删除,比较麻烦,我们先对关闭文件来做出说明。

关闭文件

创建一个demo.txt文件

image.png

先打开一个文件:

file_name = 'demo.txt'

调用open()来打开文件:

file_obj = open(file_name)

当我们获取了文件对象以后,所有的对文件的操作都应该通过对象来进行。
读取文件中的内容:

content = file_obj.read()

read()方法,用来读取文件中的内容,它会将内容全部保存为一个字符串返回。
将内容打印出来:

print(content)

执行结果:

image.png

在对文件进行操作之后必须要对文件进行关闭。
关闭文件
调用close()方法来关闭文件

file_obj.close()

执行结果:

image.png

执行结果一样,如果能看出对文件进行关闭呢?
我们对文件进行读取:

file_obj.read()

执行结果:

image.png

程序出错了,是因为不能对已经关闭的文件进行操作,所以程序出错。

但是我们对于close的调用并不常见,因为比较麻烦,每次都必须在close之前去编写程序,有时候可能会忘记。python为了解决这种麻烦,提供了一种方法。
with ... as 语句

with open(file_name) as file_obj :
    print(file_obj.read())

执行结果:

image.png

with语句中可以直接使用file_obj来做文件操作。
此时我们在with方法外面输出结果,来对比一下:

print(file_obj.read())

执行结果:

image.png

此时这个文件只能在with中使用,一旦with结束则文件会自动close()。
接下来我们来进一步完善我们的代码:

file_name = 'hello'

with open(file_name) as file_obj :
        print(file_obj.read())

此时明显hello文件是不存在的。
执行结果:

image.png

此时因为文件不存在,出现了异常,若我们想对文件异常处理该怎么办呢?
我们可以直接利用try...except进行处理。

file_name = 'hello'

try:
    with open(file_name) as file_obj :
        print(file_obj.read())
except FileNotFoundError:
    print(f'{file_name} 文件不存在~~')

执行结果:

image.png

如果修改代码:

file_name = 'demo.txt'

执行结果:

image.png

如果存在,则可以正常输出,且关闭文件。

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
Python学习站
使用钉钉扫一扫加入圈子
+ 订阅

Python学习资料大全,包含Python编程学习、实战案例分享、开发者必知词条等内容。

官方博客
官网链接