Python使用with open() as读写文件【必知必会】

前言:在前面的博文里,我介绍了Python中的文件操作,详情见:深入浅出Python——Python高级语法之文件操作,本文将主要讲解with open() as读写文件的优点与作用。

一、读取文件抛出异常

在之前的博文里,我们说到:要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符:

f = open('test.txt', 'r')

标示符'r'表示读文件。这样,我们就成功地打开了一个文件。但是,如果这个文件不存在,那么此时open()函数就会抛出一个IOError的错误,并且给出错误码和详细的信息告诉我们文件不存在,如下:

Traceback (most recent call last):
  File "G:\pyStudy\NotepadPyTest\Test", line 1, in <module>
    f = open('test.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'

如果文件成功打开,那么此时就可以调用read()方法读取文件中的内容。

f.read()

特别需要注意的是: 在操作文件完成之后,需要调用close()方法关闭文件。因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的:

f.close()

二、分析解决上述问题

由于文件读写时有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally通过捕捉异常、处理异常来实现。

如果能保证文件打开没有异常的情况下,我们每次都这么写,实在太繁琐。所以,Python引入了with语句来自动帮我们调用close()方法。也就是说:文件读取的这个操作,只有在with语句内部才会生效,不会离开。

三、with open() as读写文件

语法:

with open(文件名, 模式) as 文件对象:
    文件对象.方法()

实例:

with open('test.txt', 'r') as f:
    print(f.read())

由此可见:代码更加简洁、优美,并且不必调用close()方法。

注意:with语句不仅可以用来读文件,还可以写文件,具体根据需求。

四、File对象属性总结

文件对象属性描 述
file.closed表示文件已经被关闭,否则为False
file.mode打开文件时使用的访问模式
file.encoding文件所使用的编码
file.name文件名
file.newlines未读取到行分隔符时为None
  • 54
    点赞
  • 236
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值