当前位置: 首页 > news >正文

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

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

  • 入门人工智能 —— 使用 Python 进行文件读写
    • 打开文件
    • 读取文件内容
      • 读取整个文件
      • 逐行读取文件内容
      • 读取所有行并存储为列表
    • 写入文件内容
    • 关闭文件
  • 日志记录功能
    • 核心代码:
    • 完整代码:
    • 运行结果
  • 学习进度

入门人工智能 —— 使用 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

main.py

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

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

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

读取文件内容

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

读取整个文件

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

在这里插入图片描述

逐行读取文件内容

# 打开一个日志文件
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)

在这里插入图片描述

读取所有行并存储为列表

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

在这里插入图片描述

写入文件内容

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

# 打开文件以供写入
file = open("app.log", "w")# 写入文本内容
file.write("为什么!\n")
file.write("不为什么")# 关闭文件
file.close()

在这里插入图片描述

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

关闭文件

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

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

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

日志记录功能

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

核心代码:

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

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

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

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

完整代码:

import datetimedef 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("这是一个日志消息")

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

运行结果

在这里插入图片描述

在这里插入图片描述

学习进度

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

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

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

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

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

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

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

相关文章:

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

入门人工智能 —— 使用 Python 进行文件读写(4) 入门人工智能 —— 使用 Python 进行文件读写打开文件读取文件内容读取整个文件逐行读取文件内容读取所有行并存储为列表 写入文件内容关闭文件 日志记录功能核心代码:完整代码:运…...

使用Caffeine实现帖子的缓存来优化网站的运行速度

导入依赖 <!-- https://mvnrepository.com/artifact/com.github.ben-manes.caffeine/caffeine --><dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.1.7</version>…...

Webpack5 搭建Vue项目(进阶版)

Webpack5 搭建Vue项目&#xff08;进阶版&#xff09; 提示&#xff1a;中间隔了好长时间&#xff0c;我胡汉三又回来继续更新了&#xff01;&#xff01;&#xff01;&#x1f602;&#x1f602;&#x1f602; 文章目录 Webpack5 搭建Vue项目&#xff08;进阶版&#xff09;前…...

论文阅读:Distortion-Free Wide-Angle Portraits on Camera Phones

论文阅读&#xff1a;Distortion-Free Wide-Angle Portraits on Camera Phones 今天介绍一篇谷歌 2019 年的论文&#xff0c;是关于广角畸变校正的。 Abstract 广角摄影&#xff0c;可以带来不一样的摄影体验&#xff0c;因为广角的 FOV 更大&#xff0c;所以能将更多的内容…...

力扣每日一题---207. 课程表

Problem: 207. 课程表 文章目录 解题方法复杂度Code 解题方法 y总的 Topsort 模板题 复杂度 时间复杂度: 添加时间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) 空间复杂度: 添加空间复杂度, 示例&#xff1a; O ( n ) O(n) O(n) Code class Solution {int res 0; public…...

在Kubernetes环境中有关Nginx Ingress与API Gateway的连接问题

文章目录 小结问题解决参考 小结 在Kubernetes环境中是通过Nginx Ingress来从外部访问Kubernetes内部的环境&#xff0c;并用API Gateway来分发请求&#xff0c;碰到了 502 Bad gateway.的问题&#xff0c;并尝试解决。 问题 从外部通过Nginx Ingress访问Kubernetes内部的环…...

c语言练习44:深入理解strstr

深入理解strstr strstr作用展示&#xff1a; #include <stdio.h> #include <string.h> int main() {char str[] "This is a simple string";char* pch;pch strstr(str, "simple");/*strncpy(pch, "sample", 6);*/printf("%s…...

渗透测试漏洞原理之---【业务安全】

文章目录 1、业务安全概述1.1业务安全现状1.1.1、业务逻辑漏洞1.1.2、黑客攻击目标 2、业务安全测试2.1、业务安全测试流程2.1.1、测试准备2.1.2、业务调研2.1.3、业务建模2.1.4、业务流程梳理2.1.5、业务风险点识别2.1.6 开展测试2.1.7 撰写报告 3、业务安全经典场景3.1、业务…...

CentOS查看CPU、内存、网络流量和磁盘 I/O

安装 yum install -y sysstat sar -d 1 1 rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s rsec/s:…...

无人机航线规划

无人机航线规划&#xff0c;对于无人机的任务执行有着至关重要的作用&#xff0c;无人机在从起点飞向目的点的过程中&#xff0c;如何规划出一条安全路径&#xff0c;并且保证该路径代价最优&#xff0c;是无人机航线规划的主要目的。其中路径最优的含义是&#xff0c;在无人机…...

react中受控组件与非受控组件

受控组件与非受控组件 受控组件: 其值由 React 控制的组件,通常使用 state 来控制和修改组件的值。 例如受控的 组件: class NameForm extends React.Component {constructor(props) {super(props);this.state {value: };}handleChange (event) > {this.setState({val…...

【网络教程】如何解决Docker删除镜像和容器后磁盘空间未释放的问题

文章目录 问题分析解决方案删除未使用的容器删除未使用的镜像删除未使用的数据卷调整Docker数据存储路径问题分析 当删除Docker镜像和容器后,磁盘空间并未释放,这可能导致磁盘空间不足。造成此问题的原因包括: Docker镜像和容器的删除策略:默认情况下,Docker不会立即删除…...

Python中的进度条显示方案

迷途小书童 读完需要 3分钟 速读仅需 1 分钟 大家好&#xff0c;我是迷途小书童! tqdm 是一个非常常用的 Python 进度条库&#xff0c;它可以在循环迭代和 IO 操作期间添加一个进度条&#xff0c;直观地显示循环迭代的进程。 tqdm 是在 2013 年发布的&#xff0c;目的是为 Pyth…...

2023-09-05力扣每日一题

链接&#xff1a; 2605. 从两个数字数组里生成最小数字 题意&#xff1a; 两个数组都只包含1-9的数字&#xff0c;求一个最小数&#xff0c;两个数组内都要有它的其中一位 解&#xff1a; 要么是个位数要么是十位数&#xff0c;存一下数量和两边的最小数即可 实际代码&am…...

ODC现已开源:与开发者共创企业级的数据库协同开发工具

OceanBase 开发者中心&#xff08;OceanBase Developer Center&#xff0c;以下简称 ODC&#xff09;是一款开源的数据库开发和数据库管理协同工具&#xff0c;从首个版本上线距今已经发展了三年有余&#xff0c;ODC 逐步由一款专为 OceanBase 打造的开发者工具演进成为支持多数…...

生成克隆钓鱼网站与对win7进行后渗透操作

目录 目录 前言 系列文章列表 思维导图 1&#xff0c;实验涉及复现环境 2&#xff0c;CS的介绍 2.1,CS的简介 2.2,CS的主要功能 3&#xff0c;CS的安装 3.1,将cobalt_strike_4.5文件夹放到kali中 3.1,放入过程中的注意事项 3.2,如图所示 4,配置工具 4.1,进入c…...

Ubuntu18中NVIDIA,cuda,cudnn,pytorch安装

注意&#xff1a;nvidia驱动和cuda,cudnn,pytroch,python的对应关系 linux安装pytorch&#xff08;包括cuda与cudnn&#xff09;_linux清华园按照pytorch1.12_BryceRui的博客-CSDN博客 安装流程&#xff1a;安装cuda&#xff08;包括nvidia驱动&#xff09; cudnn python安装…...

MATLAB中M文件编写

简介 所谓M文件就是将处理问题的各种命令融合到一个文件中&#xff0c;该文件以.m为扩展名。然后&#xff0c;由MATLAB系统编译M文件&#xff0c;得出相应的运行结果。M文件具有相当大的可开发性和扩展性。M文件有脚本文件和函数文件两种。脚本文件不需要输入参数&#xff0c;…...

企业数字化神经网络

随着数字化时代的到来&#xff0c;数据已经成为企业战略性资源和重要的生产要素。企业数字化转型的核心是充分开发和利用数据资源&#xff0c;以数据为驱动&#xff0c;对业务流程进行重构与创新&#xff0c;从而提升企业的核心竞争力。业务系统是企业数据资源的源头&#xff0…...

C++this指针

本文旨在讲解C中this关键字&#xff0c;以及其相关作用&#xff01; 定义 this 是 C 中的一个关键字&#xff0c;也是一个 const 指针&#xff0c;它指向当前对象&#xff0c;通过它可以访问当前对象的所有成员。 this的介绍 下面来看一下关于this这个关键字的实例&#xff0…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

PLC入门【4】基本指令2(SET RST)

04 基本指令2 PLC编程第四课基本指令(2) 1、运用上接课所学的基本指令完成个简单的实例编程。 2、学习SET--置位指令 3、RST--复位指令 打开软件(FX-TRN-BEG-C)&#xff0c;从 文件 - 主画面&#xff0c;“B: 让我们学习基本的”- “B-3.控制优先程序”。 点击“梯形图编辑”…...