• Python 文件的读写操作


    1. 文件对象

    文件读写操作

    • 把大象放冰箱里,拢共分几步?
    • 准备字典文件

    函数速查:

    常用函数功能
    f = open(‘PATH’)打开指定路径的文件f 是文件对象。
    f.read()从文件对象中读取文件内容
    f.readline()读取一行内容
    f.readlines()返回一个列表,元素是文件的每一行内容
    f.write()向文件中写入内容
    f.writelines()以列表的方式向文件中写入内容。
    f.close()关闭文件
    time.sleep()沉睡响应的秒数

    1.1 文件打开方式

    1.1.1 打开文件

    使用open() 函数打开 1.txt 文件,指定只读模式文件(打开冰箱门)

    基本语法:

    #打开文件
    f = open("1.txt")
    
    #查看文件类型
    print(type(f))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20230918211345593

    1.1.2 关闭文件
    #打开文件
    f = open('E:\Python Code\\1.txt', 'r')
    
    #关闭文件
    f.close()
    
    #查看文件是否关闭
    print(f.closed)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20230918211553243

    1.1.3 访问模式
    访问模式操作说明
    r (read)以读方式打开默认打开文件的方式 文件不存在则报错。
    w (write)以写方式打开文件存在则清空,不存在则创建。
    a (add)以追加模式打开不存在则创建。
    存在则追加
    +以读写模式打开如r+,w+,a+。
    b以二进制模式打开如rb,wb,ab。

    常用打开文件的参数:

    r
    w
    a
    rb
    wb
    ab
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    f = open("./pass.dic", "r")
    print(f.closed)  #False
    f.close()
    f = open("./pass.dic", "W")
    f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    说明:

    open(“./pass.dic”, “r”) :表示已读的方式打开

    f.closed :表示查看文件是否关闭

    f.close() :表示关闭文件

    open(“./pass.dic”, “W”) :表示以写的方式打开,写完以后记得关闭文件。

    1.2文件读取

    1.2.1 read()

    read() 方法用来读取文件内容

    f = open("E:\Python Code\\1.txt",'r')
    data=f.read()
    print(data)
    
    • 1
    • 2
    • 3

    read() 方法有点莽,读取文件中所有内容,此方法慎用。

    read() 方法比较适合读取二进制文件,包括exe 程序,图片等文件,不适合读取纯文本文件。

    \n 表示换行(也可以\n\r)

    image-20230918212232629

    1.2.2 readline()

    读取打开文件的一行(读取下个行结束符之前的所有字节),包括行结束符,作为字符串返回。它也有一个可选的size 参数,默认为-1,代表读至行结束符,如果提供了该参数,那么在超过size 个字节后会返回不完整的行。

    该函数每执行一次,向下读取一行。

    f = open("E:\Python Code\\1.txt",'r')
    print(f.readline()) #输出第一行,此时文件指针指向第二行开头
    print(f.readline())
    
    • 1
    • 2
    • 3

    image-20230918212608300

    除去中间的空行,使用strip函数,默认去除头尾的空格或者换行符:

    f = open("E:\Python Code\\1.txt",'r')
    print((f.readline()).strip()) 
    print((f.readline()).strip())
    
    • 1
    • 2
    • 3

    image-20230918212838803

    1.2.3 readlines()

    readlines() 方法读取所有(剩余的)行,然后把它们作为一个元素是字符串的列表返回。

    f = open("E:\Python Code\\1.txt",'r')
    print(f.readlines()) #从头开始,返回一个字符串列表
    print("---------------------") #为了直观一点
    print(f.readline()) #因为文件指针已经指向了文件末尾,所以会输出空
    print("---------------------") #为了直观一点
    f.seek(0,0) #此时就需要使用seek函数来重新设置文件读取指针的位置
    print(f.readline()) #再次输出
    f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    说明:

    seek(0,0) 重新设置文件读取指针到开头

    image-20230918215052206

    1.3 文件迭代

    如果需要逐行处理文件,可以结合for 循环迭代(遍历)文件。迭代文件的方法与处理其他序列类型的数据类似。

    # 12 - 文件迭代
    
    f = open(file = "E:\Python Code\\1.txt", mode = "r")
    
    for i in f:  # f 也可换成 f.readlines()
        print(i.strip())
    
    f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20230918215501918

    有可能遇到的问题:

    • 在编程时,f.close() 方法容易忘记写。
    • 在处理文件时,有可能会遇到异常,导致整个脚本强制退出,f.close() 不会被执行到。
    # 13 - 文件迭代的改进方法.py
    
    with open(file = "E:\Python Code\\1.txt", mode = "r") as f:
        for line in f:
            print(line.strip())
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用该关键字可以让python去确定,我们在不需要访问文件的时候自动关闭文件。也就是说我们只需要打开和操纵文件,python会在合适的机会关闭文件。即使在文件打开过程中,遇到异常无法关闭文件的情况下,也能自动关闭文件。

    image-20230918215840240

    1.4 文件输入

    1.4.1 write()

    write() 内建方法功能与read() 和readline() 相反。它把含有文本数据或二进制数据块的字符串写入到文件中去。写入文件时,不会自动添加行结束标志,需要程序员手工输入。

    f = open('E:\Python Code\\1.txt', 'a') #打开文件方式为追加
    f.write('g_h_i\n') #追加写入
    f.close() #关闭
    
    f = open('E:\Python Code\\1.txt', 'a')
    f.write("zhangsan\n")
    f.close()
    
    f = open('E:\Python Code\\1.txt', 'r') #打开文件方式为读取
    print(f.readlines()) #以文件列表的形式输出
    f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    image-20230918221657036

    1.4.2 writelines()

    和readlines() 一样,writelines() 方法是针对列表的操作,它接受一个字符串列表作为参数,将它们写入文件,行结束符并不会被自动加入,所以如果需要的话,必须在调用writelines() 前给每行结尾加上行结束符。

    >>> password_list=
    ['venustech\n', 'nsfocus\n', 'topsec\n', 'dbappsecrutiy\n', 'knownsec\n', 'colasoft\n', 'sangfor\n', 'qianxin\n', 'chaitin\n', 'sbr-info\n']
    >>> f = open('sec.dic', 'a')
    >>> f.writelines(password_list)
    >>> f.close()
    adlines()) #以文件列表的形式输出
    f.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    STL相关面试问题
    [mysql]游标和触发器
    C++ VS2015安装教程,下载和安装(下载地址+图解+详细步骤)
    ssm生鲜超市管理系统的设计与实现毕业设计源码261635
    模拟滴答声
    【 Maven 】花式玩法之多模块项目
    CentOS上搭建SVN并自动同步至web目录
    Flink入门系列01-概述
    HTTP协议中的“报头”(header)和 “正文“ (body)详解
    Android子线程可以更新UI
  • 原文地址:https://blog.csdn.net/qq_45953122/article/details/132999445