入门人工智能 —— 使用 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,并添加了时间戳,实现了更方便的日志记录。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/74473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5、CesiumForUnreal实现瓦片坐标信息图层效果

文章目录 1.实现目标2.实现过程2.1 原理简介2.2 cesium-native改造2.3 CesiumForUnreal改造2.4 运行测试3.参考资料1.实现目标 参考CesiumJs的TileCoordinatesImageryProvider,在CesiumForUnreal中也实现瓦片坐标信息图层的效果,便于后面在调试地形和影像瓦片的加载调度等过…

超详细最新PyCharm+Python环境安装,多图,逐步骤

PyCharmPython环境安装 前言一、pycharm下载安装1. 安装地址2. 安装详细步骤 二、Python下载安装1. 安装地址2. 安装详细步骤3. 环境变量忘记添加4. python安装成功测试 三. PyCharm上配置Python总结推荐文章 前言 文章会详细介绍PyCharmPython详细安装步骤,接下来…

node.js笔记

首先:浏览器能执行 JS 代码,依靠的是内核中的 V8 引擎(C 程序) 其次:Node.js 是基于 Chrome V8 引擎进行封装(运行环境) 区别:都支持 ECMAScript 标准语法,Node.js 有独立…

网络安全-IP地址信息收集

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 IP反查域名 http://stool.chinaz.com/same https://tools.ipip.net/ipdomain.php 如果渗透目标为虚拟主机…

FPGA基本算术运算

FPGA基本算术运算 FPGA基本算术运算1 有符号数与无符号数2 浮点数及定点数I、定点数的加减法II、定点数的乘除法 3 仿真验证i、加减法验证ii、乘除法验证 FPGA基本算术运算 FPGA相对于MCU有并行计算、算法效率较高等优势,但同样由于没有成型的FPU等MCU内含的浮点数运…

合宙Air724UG LuatOS-Air LVGL API控件-图片(Gif)

图片(Gif) GIF图片显示,core版本号要>3211 示例代码 方法一 -- 创建GIF图片控件 glvgl.gif_create(lvgl.scr_act()) -- 设置显示的GIF图像 lvgl.gif_set_src(g,"/lua/test.gif") -- gif图片居中 lvgl.obj_align(g, nil, lvgl…

GaussDB技术解读系列:高级压缩之OLTP表压缩

8月16日,第14届中国数据库技术大会(DTCC2023)在北京国际会议中心顺利举行。在GaussDB“五高两易”核心技术,给世界一个更优选择的专场,华为云数据库GaussDB首席架构师冯柯对华为云GaussDB数据库的高级压缩技术进行了详…

Vue3-devtools开发者工具安装方法

因为最近在学习Vue3,但是之前找到的Vue3-Devtools失效了,那就来下载安装下 下载安装 Github下载地址:Vue3-Devtools 这个链接快点:Vue3-Devtools 点击链接后页面如下 点击main选项,下拉列表往下拉,找到你想要的版…

JAVA设计模式第七讲:设计模式在 Spring 源码中的应用

设计模式(design pattern)是对软件设计中普遍存在的各种问题,所提出的解决方案。本文以面试题作为切入点,介绍了设计模式的常见问题。我们需要掌握各种设计模式的原理、实现、设计意图和应用场景,搞清楚能解决什么问题…

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

文章目录 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、业务…

Excel VSTO开发7 -可视化界面开发

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 7 可视化界面开发 前面的代码都是基于插件启动或者退出时,以及Excel Application的相关事件,在用户实际操作…

亚马逊云科技人工智能内容审核服务:大大降低生成不安全内容的风险

生成式人工智能技术发展日新月异,现在已经能够根据文本输入生成文本和图像。Stable Diffusion是一种文本转图像模型,可以创建栩栩如生的图像应用。通过Amazon SageMaker JumpStart,使用Stable Diffusion模型轻松地从文本生成图像。 尽管生成式…

并发-Executor框架笔记

Executor框架 jdk5开始,把工作单元与执行机制分离开来,工作单元包括Runable和Callable,执行机制由Executor框架来提供。 Executor框架简介 Executor框架的两级调度模型 Java线程被一对一映射为本地操作系统线程 java线程启动会创建一个本…

Unity3D URP 仿蜘蛛侠风格化BloomAO

Unity3D URP 仿蜘蛛侠风格化Bloom&AO BloomBloom效果流程:制作控制面板VolumeComponent.CSCustom Renderer FeatherCustom Renderer PassBloom ShaderComposite Shader 完善Custom Feather风格化AO 总结 本篇文章介绍在URP中如何进行风格化后处理,使…

高阶数据结构-----三种平衡树的实现以及原理(未完成)

TreeMap和TreeSet的底层实现原理就是红黑树 一)AVL树: 1)必须是一棵搜索树:前提是二叉树,任取一个节点,它的左孩子的Key小于父亲节点的Key小于右孩子节点的Key,中序遍历是有序的,按照Key的大小进行排列,高度平衡的二叉…

2024字节跳动校招面试真题汇总及其解答(一)

1. 【算法题】重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:hea…

SSH是如何配置的

目录 什么是SSH SSH可以做什么其他用途? ssh有几种连接方法吗 我应该用哪种方法连接SSH1或SSH2? 每天都在用SSH你知道SSH的原理吗 开启ssh后telnet会关闭吗 SSH的优缺点 SSH和Telnet之间优缺点的对比 SSH的配置实验 ensp Cisco H3C 1、什么是…

QT—基于http协议的网络文件下载

1.常用到的类 QNetworkAccessManager类用于协调网络操作,负责发送网络请求,创建网络响应 QNetworkReply类表示网络请求的响应。在QNetworkAccessManager发送一个网络请求后创建一个网络响应。它提供了以下信号: finished():完成…

【八大经典排序算法】:直接插入排序、希尔排序实现 ---> 性能大比拼!!!

【八大经典排序算法】:直接插入排序、希尔排序实现 ---> 性能大比拼!!! 一、 直接插入排序1.1 插入排序原理1.2 代码实现1.3 直接插入排序特点总结 二、希尔排序 ( 缩小增量排序 )2.1 希尔排序原理2.2 代码实现2.3 希尔排序特点…

数据可视化、BI和数字孪生软件:用途和特点对比

在现代企业和科技领域,数据起着至关重要的作用。为了更好地管理和理解数据,不同类型的软件工具应运而生,其中包括数据可视化软件、BI(Business Intelligence)软件和数字孪生软件。虽然它们都涉及数据,但在功…