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

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

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

关闭文件

创建一个demo.txt文件

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

先打开一个文件:

file_name = 'demo.txt'

调用open()来打开文件:

file_obj = open(file_name)

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

content = file_obj.read()

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

print(content)

执行结果:

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

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

file_obj.close()

执行结果:

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

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

file_obj.read()

执行结果:

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

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

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

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

执行结果:

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

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

print(file_obj.read())

执行结果:

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

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

file_name = 'hello'

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

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

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

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

file_name = 'hello'

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

执行结果:

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

如果修改代码:

file_name = 'demo.txt'

执行结果:

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

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

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

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

上一篇:使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP注意事项


下一篇:前端搞报表|数据分析提效全链路解决方案