• Python-文件常用函数-读文件-写文件-定位文件



    读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

    1.常用函数

    1.1.open函数

    file object = open(file_name [, access_mode][, buffering])
    file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
    access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
    buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

    1.2.读取模式

    模式描述
    t文本模式 (默认)。
    x写模式,新建一个文件,如果该文件已存在则会报错。
    b二进制模式。
    +打开一个文件进行更新(可读可写)。
    U通用换行模式(不推荐)。
    r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
    r+打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
    w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

    2.读文件

    2.1直接打开就读

    with open('filepath','r') as f:
        for line in f:
            print(line)
            print('一行数据')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    虽然f是一个文件实例,但可以通过以上方式对每一行进行循环处理了,处理时每一行是一个字符串str,而且这个是速度最快最简洁的方法。

    2.2.read()读取

    fileObject.read([count])
    被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。

    with open('filepath','r') as f:
        ff=f.read()
    
    
    • 1
    • 2
    • 3

    这个函数把文件全部内容一次性读到一个字符串中。就是一坨的那种,如果把ff用循环读取的方式输出,会是一个一个字符,因为ff是字符串,本质上是tuple。

    2.3.readlines()读取

    with open('filepath','r') as f:
        lines=f.readlines()
        for line in lines:
            print(line)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.4.readline()读取

    with open('filepath','r') as f:
        line =f.readline()
        while line:
            print(line)
            line=f.readline()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这种方式是一行一行的读,非常的省内存,当文件巨大的情况下是有好处的。

    3.写文件

    write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

    fileObject.write(string)

    # 打开一个文件
    fo = open("foo.txt", "w")
    fo.write( "\nVery good site!\n")
     
    # 关闭打开的文件
    fo.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.关闭文件

    File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

    fileObject.close()

    # 打开一个文件
    fo = open("foo.txt", "w")
    print "文件名: ", fo.name
     
    # 关闭打开的文件
    fo.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.文件定位

    tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。
    seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
    如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

    # 打开一个文件
    fo = open("foo.txt", "r+")
    str = fo.read(10)
    print "读取的字符串是 : ", str
     
    # 查找当前位置
    position = fo.tell()
    print "当前文件位置 : ", position
     
    # 把指针再次重新定位到文件开头
    position = fo.seek(0, 0)
    str = fo.read(10)
    print "重新读取字符串 : ", str
    # 关闭打开的文件
    fo.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    6.作者答疑

    如有疑问,敬请留言。

  • 相关阅读:
    【数据库】Sql Server 2022通过临时表和游标遍历方式逻辑处理获取目标数据
    docker-compose模板文件、命令的使用
    MASA Framework 获取配置信息的方法
    EDA实验-----4*4矩阵键盘与数码管显示测试(Quartus ‖)
    全屏组件封装(react18+antd)
    机器学习 | 四大常用机器学习Python库介绍
    Q4已来,DAO发新生|CyberDAO子DAO种子会议
    sql语句之多表查询
    iOS小技能:Xcode14新特性(适配)
    用好kafka,你不得不知的那些工具
  • 原文地址:https://blog.csdn.net/m0_67316550/article/details/124514912