zoukankan      html  css  js  c++  java
  • 【Python】read() readline() readlines() 的比较

    Python内置的读写文件的函数,底层实现还是C。

    读文件函数结构:

    要用读文件模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标识符。

    "r"表示读文件,如果文件不存在,就会抛出错误码和详细的信息。

    如果文件打开成功,可以使用读取)函数一次读取文件的全部内容,以read()函数为例,Python把内容读到内存,用一个str对象表示。

    在读取结束以后需要调用close()方法关闭 。

    f = open('/Users/michael/test.txt', 'r')
    f.close()

    由于文件在读写时可能产生error,一旦出错,后面的f.close()就不会被调用,所以为了保证能够正常关闭文件,可以使用try...finally进行异常处理。

    try:
        f = open('/path/to/file', 'r')
         f.read()
    finally:
        if f:
            f.close()

    也可以使用更简便的的方法with()。该函数不需要调用close()。该函数结构结束以后自动关闭读取。

    with open('/path/to/file', 'r') as f:
         line = f.read()
        ...

    读取方式:

    python的读取方式一共有三种,分别是read()、readline()、readlines()

    read():

    调用read()会一次性读取文件全部内容, 速度最快,但当数据过大时不适用。

    readline():

    使用readline()方法,逐行读取内容,返回结果为list。

    with open('/path/to/file', 'r') as f:
        line = f.readline()
        while line:
            line = f.readine()  #这里只能读取一行数据
            ...

    readlines():

    选择使用readlines()方法,一次性读取文本所有内容,返回结果为list,其中每个元素结尾有" "。该方法适合读取配置文件,速度较快,但是文本越大占用内存越大。

    这种方法读取的文本内容,每行文本末尾都会带一个' '换行符 (可以使用L.rstrip(' ')去掉换行符)。注意,python中方法的调用返回的是一个副本,并不会对原有的元素进行修改,如果要修改末尾符号,需要处理赋值给新的字符串。

    with open('/path/to/file', 'r') as f:
        line = f.readlines()
     
     
    for i in line:
        lines.append(i.rstrip('
    '))

    优化的处理方式:

    通常在数据挖掘中,数据都是有规律的。因此使用迭代的方式进行读取数据是一种很好的兼顾时间和内存的pythonic写法:

    split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串,通过split()方法使得read()返回一个字符串。这是最通用的处理方式。

    但是,这种方式对格式有严格要求。比如说如果结尾的时候有多个" ",那么最后几个List元素可能为空。

    with open('/path/to/file','r') as f:
       line = f.read().split('
    ')

    注:文件内容的覆盖追加问题:

    一个文件在对象没有关闭之前可以被写多次,每一次都在上一次的末尾追加内容,但是这不是真的写进了文件,而且将内容放在了内存中,在关闭指针以后一次性全部写入。

    当关闭指针以后再打开文件,则会从文件的首行开始写,从而覆盖原有内容。

  • 相关阅读:
    JS原始类型Number数字类型
    JS数据类型基础知识
    JS基础循环语句和跳转语句
    JS对象类型数组方法篇
    JS对象类型数组基础篇
    JS基础逻辑运算符
    IE6,IE7,FF等浏览器不兼容原因及解决办法(转)
    DML、DDL、DCL区别
    Asp.net(c#)GridView分页时用图片显示上一页,下一页
    P3P完成跨域COOKIE
  • 原文地址:https://www.cnblogs.com/guangluwutu/p/11958415.html
Copyright © 2011-2022 走看看