• python--文件操作


    一、概述

    我们工作中需要经常操作文件,下面就讲讲如何用Python操作文件

    1、文件操作的流程:

    • 打开文件,得到文件句柄赋值给一个变量
    • 通过文件句柄,对文件进行操作
    • 关闭文件
    #获取文件句柄
    f = open("yesterday","r",encoding="utf-8")
    #读取数据
    data = f.read()
    #打印读取的文件
    print(data)
    #关闭文件
    f.close()

    注: f 又叫文件句柄,它包含文件的文件名、文件的字符集、文件的大小、文件在硬盘上的起始位置

    2、两次读取,第二次读取无内容解疑:

    因为在文件中 ,维护一个类似文件指针的一个东西,这个文件指针类似于我们平时操作文件时的光标的东西,所以当第1次读文件时,文件指针已经指向最后一个位置,所以第2次再去读取的时候,是从最后一个位置开始读取的,所以读取的为空。

    那怎么再重新读取数据呐?把光标移动到开始位即可

    读取内容:

    Yesterday when I was young
    View Code
    >>> f = open("yesterday","r",encoding="utf-8")
    >>> #第1次读取
    >>> data = f.read()
    >>> #第2次读取
    >>> data2 = f.read()
    >>> print(data)
    >>> print("----------data2-----%s------"%(data2))
    >>> f.close()
    #输出结果
    Yesterday when I was young
    ----------data2-----------
    View Code

    Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

    注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

    二、文件打开模式:

    注:在读取文件之前最好导入os模块,判断一下文件是否存在,这是一个好习惯

    三、with、读取文件对比:

    1、with:

    为了避免打开文件后忘记关闭,可以通过管理上下文,即:

    with open('log','r') as f:
        pass

    如果打开多个文件会导致一行代码过长,(python官方建议,一行代码不超过80个字符),所以打开多个文件建议以下写法:

    #with open('log1') as obj1, open('log2') as obj2:
    
    with open('log1') as obj1, 
            open('log2') as obj2:
        pass

    2、读取文件对比:

    #readline() 读取一行文件
    
    >>> f = open("yesterday","r",encoding="utf-8")
    >>> print(f.readline())
    >>> f.close()
    #输出结果
    Yesterday when I was young
    
    
    #------------------------------------------------------------------------------------
    #readlines() 把文件中的每一行作为一个元素形成一个列表
    
    >>> f = open("yesterday","r",encoding="utf-8")
    >>> print(f.readlines())
    >>> f.close()
    #输出结果
    [' Yesterday when I was young']

    我们正常循环读取文件中的每一行,如下:

    >>> f = open("yesterday","r",encoding="utf-8")
    >>> for line in f.readlines():
    >>>     print(line.strip())
    >>> f.close()
    #输出结果
    Yesterday when I was young
    Yesterday when I was young

    这种方法已经达到我们的目的了,可以顺利的读取每一行,但是,当我们遇到2G,20G,甚至200G的文件时,你这样读取会导致内存不够用,会使程序变的很慢,因为你的内存只有几个G,你把几十个G的数据放到内存,内存肯定是受不了的,所以这种方法只适合小文件,不适合大文件。我们于是就有下面这种方法,如下:

    >>> f = open("yesterday","r",encoding="utf-8")
    #f文件变成迭代器
    >>> for line in f:
    >>>     print(line.strip())
    >>> f.close()
    #输出结果
    Yesterday when I was young
    Yesterday when I was young

    这种写法的好处在于,读取文件时,是一行一行的读取,而且,读取一行删除一行,内存中只保留一行

    四、文件操作的内置方法:

    file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

  • 相关阅读:
    四级英语day9
    123
    像程序员一样思考
    Kali
    OS X
    Effective Java
    DHU ACM OJ
    Ambari
    Hadoop
    Hadoop2
  • 原文地址:https://www.cnblogs.com/doumingyi/p/12449372.html
Copyright © 2020-2023  润新知