《Python 简易速速上手小册》第6章:Python 文件和数据持久化(基于最新版 Python3.12 编写)

注意:本《Python 简易速速上手小册》

核心目的在于让零基础新手「快速构建 Python 知识体系」

文章目录

    • <mark >注意:本《Python 简易速速上手小册》
    • <mark >核心目的在于让零基础新手「快速构建 Python 知识体系」
  • 6.1 文件读写操作
    • 6.1.1 打开文件
    • 6.1.2 读取文件内容
    • 6.1.3 写入文件内容
    • 6.1.4 关闭文件
    • 6.1.5 异常处理
  • 6.2 处理 JSON 和 CSV 文件
    • 6.2.1 读取 JSON 文件
    • 6.2.2 写入 JSON 文件
    • 6.2.3 处理 CSV 文件
    • 6.2.4 写入 CSV 文件
    • 6.2.5 异常处理
  • 6.3 数据库交互基础
    • 6.3.1 连接到 MySQL 数据库
    • 6.3.2 执行 SQL 查询
      • 6.3.2.1 创建表格
      • 6.3.2.2 插入数据
      • 6.3.2.3 查询数据
      • 6.3.2.4 更新数据
      • 6.3.2.5 删除数据
    • 6.3.3 提交更改和关闭连接
    • 6.3.4 异常处理

当然!让我们深入研究第 6 章的 6.1 节:“文件读写操作”。了解如何与文件进行交互、读取和写入数据是 Python 编程中的基本技能。

6.1 文件读写操作

在这一节,我们将学习如何打开、读取和写入文件。文件是计算机上存储和处理数据的重要方式之一,因此掌握文件读写操作对于处理各种任务至关重要。

6.1.1 打开文件

在 Python 中,使用内置的 open() 函数来打开文件。要打开文件,你需要指定文件的名称和打开模式。

# 打开文件以进行读取
with open("example.txt", "r") as file:content = file.read()# 打开文件以进行写入
with open("output.txt", "w") as file:file.write("Hello, World!")

在上面的示例中,我们使用 open() 函数打开了两个文件。第一个示例打开了一个名为 “example.txt” 的文件以供读取(模式为"r"),而第二个示例打开了一个名为 “output.txt” 的文件以供写入(模式为"w")。使用with语句可以确保文件在使用完后被正确关闭,这是一种良好的做法,因为它可以防止资源泄漏。

6.1.2 读取文件内容

一旦打开了文件,你可以使用不同的方法来读取文件的内容。最常见的方法之一是使用read()方法。

with open("example.txt", "r") as file:content = file.read()

read()方法将文件的整个内容读取为一个字符串,并将其存储在变量content中。

6.1.3 写入文件内容

要将数据写入文件,你可以使用write()方法。请注意,使用写入模式(“w”)打开文件时,如果文件已存在,它将被清空并替换为新内容。

with open("output.txt", "w") as file:file.write("Hello, World!")

在这个示例中,我们将字符串"Hello, World!"写入了名为"output.txt"的文件中。如果文件不存在,将会创建一个新文件。

6.1.4 关闭文件

在处理完文件后,一定要关闭文件,释放资源。使用with语句可以确保文件在退出with块时自动关闭,但你也可以使用close()方法手动关闭文件。

file = open("example.txt", "r")
content = file.read()
file.close()

这是手动关闭文件的方法,但使用with语句更安全和方便。

6.1.5 异常处理

在文件读写操作中,可能会发生各种异常,如文件不存在、权限不足等。因此,在实际应用中,要使用异常处理机制来处理这些情况,以确保程序能够优雅地处理问题而不崩溃。

try:with open("example.txt", "r") as file:content = file.read()
except FileNotFoundError:print("文件不存在!")
except PermissionError:print("没有文件访问权限!")

在这个示例中,我们使用tryexcept块来捕获可能发生的异常,并提供适当的错误消息。

文件读写操作是 Python 编程中的基础之一。了解如何打开、读取和写入文件,以及如何进行异常处理,对于处理各种任务都是至关重要的。无论你是处理文本文件、日志文件还是配置文件,这些技能都将成为你编程工具箱中的重要工具。继续前进,探索 Python 编程的精彩世界吧!


当然!让我们深入研究第 6 章的 6.2 节:“处理J SON 和 CSV 文件”。这一节将帮助你了解如何处理这两种常见的数据格式。

6.2 处理 JSON 和 CSV 文件

在现实世界中,经常需要处理 JSON 和 CSV 格式的数据。JSON 通常用于配置文件和 Web API 响应,而 CSV 则用于电子表格和数据导出。了解如何处理这两种格式将为你的数据处理任务提供强大的工具。

6.2.1 读取 JSON 文件

JSON(JavaScript Object Notation)是一种常见的数据交换格式,它以易读和易写的文本形式表示数据对象。Python 内置了处理 JSON 的模块。

import json# 从JSON文件中读取数据
with open("data.json", "r") as json_file:data = json.load(json_file)# 访问JSON数据
print(data["name"])
print(data["age"])

在上面的示例中,我们使用json.load()方法从名为"data.json"的 JSON 文件中读取数据,并将其解析为 Python 字典。然后,我们可以像访问字典一样访问 JSON 数据的各个字段。

6.2.2 写入 JSON 文件

如果你想将 Python 数据结构保存为 JSON 文件,也可以使用 JSON 模块。

import json# 创建一个Python字典
data = {"name": "Alice", "age": 30}# 将数据写入JSON文件
with open("output.json", "w") as json_file:json.dump(data, json_file)

在这个示例中,我们首先创建了一个包含数据的 Python 字典,然后使用 json.dump() 方法将数据写入名为 “output.json” 的 JSON 文件中。

6.2.3 处理 CSV 文件

CSV(Comma-Separated Values)是一种常见的表格数据格式,它使用逗号或其他分隔符来分隔数据字段。Python 内置了处理 CSV 的模块。

import csv# 从CSV文件中读取数据
with open("data.csv", "r", newline="") as csv_file:reader = csv.DictReader(csv_file)for row in reader:print(row["name"], row["age"])

在上面的示例中,我们使用csv.DictReader()来读取CSV文件,并将每一行数据解析为一个字典,其中列名作为字典的键。然后,我们可以轻松地访问和处理 CSV 数据。

6.2.4 写入 CSV 文件

如果你有一个包含字典的列表,可以使用CSV模块将数据写入CSV文件。

import csvdata_to_write = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]# 写入CSV文件
with open("output.csv", "w", newline="") as csv_file:fieldnames = ["name", "age"]writer = csv.DictWriter(csv_file, fieldnames=fieldnames)writer.writeheader()for row in data_to_write:writer.writerow(row)

在这个示例中,我们首先创建了一个包含字典的列表,然后使用csv.DictWriter()来将数据写入CSV文件。我们还使用writeheader()方法写入CSV文件的列名。

6.2.5 异常处理

在处理文件时,要注意处理可能出现的异常,例如文件不存在或格式错误。使用适当的异常处理来确保你的程序能够容忍各种情况。

处理 JSON 和 CSV 文件是 Python 编程中的常见任务,无论你是从外部数据源导入数据,还是将数据导出到其他系统,这些技能都非常有价值。继续前进,探索 Python 编程的奇妙世界,你的数据处理能力将更上一层楼!


当然,让我们深入研究第6章的6.3节:“数据库交互基础”。这一节将帮助你了解如何使用Python与MySQL数据库进行交互和编程。

6.3 数据库交互基础

数据库是用于存储和管理大量结构化数据的强大工具。Python提供了多种库和模块,可以让你与各种数据库系统进行交互,包括MySQL、SQLite、PostgreSQL等。在本节中,我们将重点介绍如何与MySQL数据库进行交互和编程。

6.3.1 连接到 MySQL 数据库

首先,我们需要使用合适的库来连接到 MySQL 数据库。在 Python 中,常用的库是mysql-connector-python,你可以使用pip来安装它:

pip install mysql-connector-python

然后,你可以使用以下代码来连接到MySQL数据库:

import mysql.connector# 创建数据库连接
conn = mysql.connector.connect(host="localhost",user="username",password="password",database="mydatabase"
)# 创建游标对象
cursor = conn.cursor()

在上面的示例中,我们使用mysql.connector库创建了与MySQL数据库的连接。你需要提供数据库的主机名(host)、用户名(user)、密码(password)和数据库名称(database)。然后,我们创建了一个游标对象,用于执行SQL查询和操作数据库。

6.3.2 执行 SQL 查询

一旦连接到数据库,你可以使用游标对象来执行SQL查询和操作数据。以下是一些常见的示例:

6.3.2.1 创建表格

# 创建表格
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)")

6.3.2.2 插入数据

# 插入数据
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
values = ("Alice", 30)
cursor.execute(sql, values)# 提交更改
conn.commit()

6.3.2.3 查询数据

# 查询数据
cursor.execute("SELECT * FROM users")
result = cursor.fetchall()for row in result:print(row)

6.3.2.4 更新数据

# 更新数据
sql = "UPDATE users SET age = %s WHERE name = %s"
values = (25, "Alice")
cursor.execute(sql, values)# 提交更改
conn.commit()

6.3.2.5 删除数据

# 删除数据
sql = "DELETE FROM users WHERE name = %s"
values = ("Alice",)
cursor.execute(sql, values)# 提交更改
conn.commit()

这些示例演示了如何执行常见的SQL操作,包括创建表格、插入数据、查询数据、更新数据和删除数据。

6.3.3 提交更改和关闭连接

在执行SQL操作后,一定要使用commit()方法提交更改,以确保更改生效。最后,不要忘记关闭数据库连接。

# 提交更改
conn.commit()# 关闭游标和连接
cursor.close()
conn.close()

6.3.4 异常处理

与文件操作类似,在数据库交互过程中也可能发生各种异常,例如数据库连接失败、SQL 语法错误等。因此,要使用适当的异常处理机制来处理这些情况,以确保程序能够容忍各种问题。

import mysql.connectortry:# 尝试连接到数据库conn = mysql.connector.connect(host="localhost",user="username",password="password",database="mydatabase")# 创建游标对象cursor = conn.cursor()# 执行SQL查询cursor.execute("SELECT * FROM users")result = cursor.fetchall()for row in result:print(row)except mysql.connector.Error as err:# 处理数据库连接或查询错误print(f"数据库错误: {err}")finally:# 无论是否发生异常,都要关闭游标和连接if 'conn' in locals():conn.close()if 'cursor' in locals():cursor.close()

在上面的示例中,我们使用tryexcept块来尝试连接到数据库并执行查询。如果发生与数据库连接或查询相关的异常,它们将被捕获并处理,然后程序将继续执行。无论是否发生异常,finally块都会确保关闭数据库连接和游标,以释放资源。

这个案例演示了如何使用异常处理机制来容忍可能发生的问题,从而使程序更稳定。这对于生产环境中的数据库应用程序非常重要,因为它们需要具备高可用性和容错性。

数据库交互是 Python 编程中的重要部分,它使你能够处理和管理大量的结构化数据。无论你是构建 Web 应用程序、数据分析工具还是管理系统,与数据库交互的能力都是非常有价值的。继续前进,探索 Python 编程的奇妙世界,你将能够构建强大的数据库驱动应用程序!

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

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

相关文章

【leetcode100-069到073】【栈】五题合集

【有效括号】 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的…

【Image captioning】论文阅读八—ClipCap: CLIP Prefix for Image Captioning_2021

中文标题&#xff1a;ClipCap: CLIP前缀用于图像描述&#xff08;ClipCap: CLIP Prefix for Image Captioning&#xff09; 文章目录 1. 介绍2. 相关工作3. 方法3.1 综述3.2 语言模型微调3.3 映射网络架构3.4 推理 4. 结果5. 结论 摘要&#xff1a;图像描述是视觉语言理解中的…

函数入门.

函数入门 1. 初识函数2. 函数的参数2.1 参数2.2 默认参数2.3 动态参数 3. 函数返回值总结作业 1. 初识函数 函数到底是个什么东西&#xff1f; 函数&#xff0c;可以当做是一大堆功能代码的集合。 def 函数名():函数内编写代码......函数名()例如&#xff1a; # 定义名字叫in…

【Axure高保真原型】可视化环形图

今天和大家可视化环形图的原型模板&#xff0c;&#xff0c;包括4种效果&#xff0c;移入变色在环形中部显示数据、移入变色在标签弹窗显示数据、移入放大在环形中部显示数据、移入放大在标签弹窗显示数据。这个原型是用Axure原生元件制作的&#xff0c;所以不需要联网或者调用…

项目中从需求分析到研发上线

一、背景 应用系统从设想到需求到研发到上线会经历一些列工程化过程。比如经典的瀑布模型工作流&#xff0c;其实就是一个经过很多经验总结下来的工程方法。本节阐述项目中从需求到研发上线的过程。但是也有些根据不同的行业&#xff0c;不同的公司&#xff0c;不同管理者的风…

Spring Boot使用AOP

一、为什么需要面向切面编程&#xff1f; 面向对象编程&#xff08;OOP&#xff09;的好处是显而易见的&#xff0c;缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候&#xff0c;例如日志记录、性能监控等&#xff0c;如果采用面向对象编程的方法&…

XMLHttpRequestUpload 对象

一、基本概念 XMLHttpRequestUpload 对象表示一个 XMLHttpRequest 的上传进程。它是 XMLHttpRequest 的一个属性&#xff0c;可以用来监视上传的进度。 XMLHttpRequestUpload 对象有一些事件监听器&#xff0c;可以用来处理上传过程中的各种事件&#xff1a; loadstart&#…

记录浏览器能打开github.com,android studio无法拉取github项目,并且ping github.com也拼不通的问题

问题&#xff1a; Android studio编译flutter工程突然碰上如下问题&#xff1a; 在浏览器打开该地址能正常打开&#xff0c;尝试ping&#xff1a; 解决方式 通过搜索&#xff0c;查到如下办法&#xff1a; 1、首先在ipaddress.com中查询github.com域名的固定ip地址&#xff…

LLM之RAG实战(二十一)| 使用LlamaIndex的Text2SQL和RAG的功能分析产品评论

亚马逊和沃尔玛等电子商务平台上每天都有大量的产品评论&#xff0c;这些评论是反映消费者对产品情绪的关键接触点。但是&#xff0c;企业如何从庞大的数据库获得有意义的见解&#xff1f; 我们可以使用LlamaIndex将SQL与RAG&#xff08;Retrieval Augmented Generation&#x…

【Go】Channel底层实现 ②

文章目录 channel底层实现channel发送、接收数据有缓冲 channelchannel 先写再读channel 先读再写(when the receiver comes first) 无缓冲channelchannel存在3种状态&#xff1a; channel底层实现 // channel 类型定义 type hchan struct {// channel 中的元素数量, lenqcoun…

【vue3源码】vue源码探索之旅:项目介绍

简言 记录下我眼中的vue源码项目。 gitHubvue3项目仓库 项目要求: vue版本 3.4.15nodeV18.12.0以上使用pnpm包管理器vitest测试框架Vue3 vue3是渐进式JavaScript框架,易学易用,性能出色,适用场景丰富的 Web 前端框架。 Vue 是一个框架,也是一个生态。其功能覆盖了大部分…

QGIS编译(跨平台编译)之二十六:giflib编译(Windows、Linux、MacOS环境下编译)

文章目录 1、giflib介绍2、giflib下载3、Windows下编译4、Linux下编译5、MacOS下编译1、giflib介绍 giflib(又称为Libgif)是一个开源的C语言库,用于处理GIF图像格式。它提供了一组函数和工具,使得开发者可以读取、写入和操作GIF图像文件。 GIFlib支持GIF87a和GIF89a两种版…

Transformer模型 | Pytorch实现Transformer模型进行时间序列预测

Transformer模型最初是为了处理自然语言处理任务而设计的,但它也可以用于时间序列预测。下面是将Transformer模型应用于时间序列预测的一般步骤: 数据准备:准备时间序列数据集,包括历史观测值和目标预测值。通常,你需要将时间序列转换为固定长度的滑动窗口序列,以便输入…

计算机网络之广播风暴

广播风暴&#xff08;Broadcast Storm&#xff09;是指在计算机网络中出现大量广播帧的现象&#xff0c;这通常会导致网络性能下降&#xff0c;甚至整个网络瘫痪。在一个广播风暴中&#xff0c;网络上的每个设备都会接收并处理这些广播帧&#xff0c;这会消耗大量的带宽和处理能…

解决 github.com port 443: Timed out 的问题

国内访问github.com总是那么不竟如人意&#xff0c;时而无法加载网页&#xff0c;时而等我们抽完了一根烟后&#xff0c;它还处于转圈的状态。 虽然国内有gitee.com等诸多的代码托管平台&#xff0c;但却鲜有国人愿意去呢&#xff1f;其中的缘由&#xff0c;想必也不用我多说&a…

openssl3.2 - 测试程序的学习 - test\aesgcmtest.c

文章目录 openssl3.2 - 测试程序的学习 - test\aesgcmtest.c概述笔记能学到的流程性内容END openssl3.2 - 测试程序的学习 - test\aesgcmtest.c 概述 openssl3.2 - 测试程序的学习 aesgcmtest.c 工程搭建时, 发现没有提供 test_get_options(), cleanup_tests(), 需要自己补上…

Strassen矩阵乘法的C语言算法实现

矩阵乘法是高等代数中的重要基本运算&#xff0c;本文将介绍Strassen矩阵乘法的基本原理和用C语言进行算法实现的过程。 1. 一般矩阵乘法 首先&#xff0c;我们来看一下一般矩阵乘法的计算过程。 矩阵 A [ a 11 a 12 … a 1 n a 21 a 22 … a 2 n … … … … a n 1 a n 2 …

mysql中char和varchar的区别

目录 主要区别 具体区别 场景举例 优缺点 主要区别 char和varchar都是用于在数据库中存储字符串的数据类型。它们之间的主要区别在于存储空间的使用方式。 char是一种定长的数据类型&#xff0c;它的长度固定且在存储时会自动在结尾添加空格来将字符串填满指定的长度。cha…

【HDFS】一天一个RPC系列--updatePipeline

updatePipeline这个RPC一般都会配合updateBlockForPipeline RPC一起使用。 先updateBlockForPipeline、然后再updatePipeline。 建议先阅读【HDFS】一天一个RPC系列–updateBlockForPipeline 本文目标是弄清楚以下问题: 弄清updatePipeline这个RPC的作用。弄清updatePipeli…

【算法】观光(求次短路,Dijkstra)

题目 “您的个人假期”旅行社组织了一次比荷卢经济联盟的巴士之旅。 比荷卢经济联盟有很多公交线路。 每天公共汽车都会从一座城市开往另一座城市。 沿途汽车可能会在一些城市&#xff08;零或更多&#xff09;停靠。 旅行社计划旅途从 S 城市出发&#xff0c;到 F 城市结…