• 入门人工智能 —— 使用 Python 进行文件读写,并完成日志记录功能(4)


    入门人工智能 —— 使用 Python 进行文件读写

    在人工智能领域,文件读写是一项重要的任务,因为需要处理数据集、日志等文件。Python 提供了简单而强大的文件处理功能,让我们能够轻松地读取和写入文件。这篇文章,我们将学习如何使用 Python 进行文件读写操作。

    打开文件

    要操作文件,首先需要打开它。Python 提供了 open() 函数来打开文件。以下是一个示例:

    该测试文件 app.log 是和代码文件同一个目录下。

    在这里插入图片描述
    我的日志文件内容如下:

    app.log

    2023-09-09 14:58:10,763 - DEBUG - 1
    2023-09-09 14:58:10,763 - INFO - 12
    2023-09-09 14:58:10,763 - WARNING - 123
    2023-09-09 14:58:10,763 - ERROR - 1234
    2023-09-09 14:58:10,763 - CRITICAL - 12345
    
    • 1
    • 2
    • 3
    • 4
    • 5

    main.py

    # 打开一个日志文件以供读取
    file = open("app.log", "r")  # "r" 表示只读模式
    
    # 打开一个日志文件以供写入
    file = open("app.log", "w")  # "w" 表示写入模式
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在打开文件时,可以指定文件名和打开模式。常见的模式包括:

    • "r":只读模式(默认)。用于读取文件内容。
    • "w":写入模式。用于创建新文件或覆盖已存在的文件内容。
    • "a":追加模式。用于在文件末尾添加新内容。
    • "b":二进制模式。用于处理二进制文件,例如图像或音频文件。

    读取文件内容

    一旦打开了文件,您可以使用不同的方法来读取文件内容,例如 read()readline()readlines()。以下是示例:

    读取整个文件

    # 打开一个日志文件
    file = open("app.log", "r")  # "r" 表示只读模式
    # 读取整个文件内容
    content = file.read()
    print(content)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    逐行读取文件内容

    # 打开一个日志文件
    file = open("app.log", "r")  # "r" 表示只读模式
    
    # 逐行读取文件内容
    line = file.readline()
    while line:
        print(line)
        line = file.readline()
    
    # 读取所有行并存储为列表
    lines = file.readlines()
    for line in lines:
        print(line)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    读取所有行并存储为列表

    # 打开一个日志文件
    file = open("app.log", "r")  # "r" 表示只读模式
    
    # 读取所有行并存储为列表
    lines = file.readlines()
    for line in lines:
        print(line)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    写入文件内容

    要向文件中写入数据,可以使用 write() 方法。以下是一个示例:

    # 打开文件以供写入
    file = open("app.log", "w")
    
    # 写入文本内容
    file.write("为什么!\n")
    file.write("不为什么")
    
    # 关闭文件
    file.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    请注意,write() 方法不会自动添加换行符,您需要显式添加 "\n" 来分隔行。

    关闭文件

    完成文件操作后,不要忘记关闭文件,以释放文件资源。file.close() 可以关闭,不过还有一种好的做法是使用 with 语句,它会在代码块执行完毕后自动关闭文件,无论是否发生异常。

    with open("app.log", "r") as file:
        content = file.read()
        # 在这里执行文件操作,然后文件将在代码块结束时自动关闭
    
    • 1
    • 2
    • 3

    这是一个良好的习惯,可以确保文件得到适当地关闭,而不会占用资源或导致数据丢失。

    日志记录功能

    基于上面的代码,我们知道了怎么写入文件,我们现在要对这个进行扩展完成一个简易的日志记录的功能:

    核心代码:

    with open("app.log", "a") as file:
        file.write("我是追加的日志")
    
    • 1
    • 2

    接接下来,我们要封装这个成一个方法,wLog。

    def wLog(message):
        # 打开文件并追加日志
        with open("app.log", "a") as file:
            file.write(message)
    
    # 使用方法
    wLog("这是一个日志消息")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    但是这样还缺少一个时间,我们增加时间,在上述代码的基础上,我们进一步调整,下面是优化后的代码:

    完整代码:

    import datetime
    
    def wLog(message):
        # 获取当前时间
        current_time = datetime.datetime.now()
        formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
    
        # 构建日志消息
        log_message = f"{formatted_time}: {message}\n"
    
        # 打开文件并追加日志
        with open("app.log", "a") as file:
            file.write(log_message)
    
    # 使用示例
    wLog("这是一个日志消息")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    优化后的代码将日志记录功能封装成了一个函数 wLog 。这样,可以更轻松地记录日志。

    运行结果

    在这里插入图片描述

    在这里插入图片描述

    学习进度

    上面介绍了如何使用Python进行文件读写操作,以下是文章的主要要点:

    1. 打开文件:文章首先介绍了如何使用Python的open()函数来打开文件,并解释了常见的文件打开模式,如只读、写入和追加模式以及二进制模式。

    2. 读取文件内容:文章讨论了不同的方法来读取文件内容,包括使用read()readline()readlines()等方法。示例代码演示了如何逐行读取文件内容,或者将所有行存储为列表。

    3. 写入文件内容:文章展示了如何使用write()方法将数据写入文件,并强调了需要显式添加换行符来分隔行。

    4. 关闭文件:强调了在文件操作完成后关闭文件的重要性,以释放资源和确保数据不会丢失。with语句是一个良好的做法,可以自动关闭文件。

    5. 日志记录功能:文章最后介绍了如何扩展文件操作以实现一个简单的日志记录功能。通过封装日志记录的代码为一个函数wLog,并添加了时间戳,实现了更方便的日志记录。

    下篇文章就开始我们的人工智能基础——自然语言处理

  • 相关阅读:
    高频单链表题
    ​ 数据库约束
    【批处理DOS-CMD命令-汇总和小结】-文件与目录操作命令(md、rd、xcopy、dir、cd、set、move、copy、del、type、sort)
    使用html+css+js实现一个静态页面(含源码)
    Mybatis-plus 分页 功能实现
    PyTorch学习笔记-Convolution Layers与Pooling Layers
    Android开发之百度地图定位打卡
    ORA-30036:无法按8扩展段(在还原表空间‘UNDOTBS1‘中)
    最新 | VDA-ISA5.0.4最新版本发布,汽车企业如何增强信息安全?
    上海亚商投顾:信创概念掀涨停潮
  • 原文地址:https://blog.csdn.net/qq_36051316/article/details/132777538