zoukankan      html  css  js  c++  java
  • Python基础 | 使用with open() as读写文件

    一、读取文件抛出异常

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

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


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

    Traceback (most recent call last):
    File "G:pyStudyNotepadPyTestTest", 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
    

    来源:https://luckylifes.blog.csdn.net/article/details/107721072

  • 相关阅读:
    poj 3252 Round Numbers 数位DP
    HDU5840 Problem This world need more Zhu 分块 树剖
    有向图强连通分量
    CodeForces
    Gym-100814K 数位DP 模拟除法
    洛谷P3455 [POI2007]ZAP-Queries
    洛谷P2257 YY的GCD
    洛谷P3327 [SDOI2015]约数个数和(莫比乌斯反演)
    莫比乌斯反演
    小知识点
  • 原文地址:https://www.cnblogs.com/-saber/p/14283397.html
Copyright © 2011-2022 走看看