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

《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 编程的奇妙世界,你将能够构建强大的数据库驱动应用程序!

相关文章:

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

注意&#xff1a;本《Python 简易速速上手小册》 核心目的在于让零基础新手「快速构建 Python 知识体系」 文章目录 <mark >注意&#xff1a;本《Python 简易速速上手小册》<mark >核心目的在于让零基础新手「快速构建 Python 知识体系」 6.1 文件读写操作6.1.1 打…...

华为机考入门python3--(4)牛客4-字符串分隔

分类&#xff1a;字符串 知识点&#xff1a; 复制符号* 复制3个0 0*3 000 字符串截取 截取第i位到j-1位 str[i:j] 题目来自【牛客】 input_str input().strip()# 先补齐 if len(input_str) % 8 ! 0: input_str 0 * (8 - len(input_str) % 8) # 每8个分 out…...

Unity MonoBehaviour 生成dll

dllllllllllllll&#x1f953; &#x1f959;vs创建类库项目&#x1f9c0;添加UnityEngine、UnityEditor引用&#x1f355;添加MonoBehaviour类&#x1f9aa;设置dll生成路径&#x1f37f;生成dll&#x1f354;使用dll中的Mono类 &#x1f959;vs创建类库项目 &#x1f9c0;添加…...

基于Python flask MySQL 猫眼电影可视化系统设计与实现

1 绪论 1.1 设计背景及目的 猫眼电影作为国内知名的电影信息网站&#xff0c;拥有海量的电影信息、票房数据和用户评价数据。这些数据对于电影市场的研究和分析具有重要意义。然而&#xff0c;由于数据的复杂性和数据来源的多样性&#xff0c;如何有效地采集、存储和展示这些数…...

【新课上架】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

01 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性&#xff0c;同时提高性能。本课程基于当前主流版本Oracle 19cOEL7.9解析如何搭建2节点RAC对1节点单机的DATA GU…...

gdb调试std::list和std::vector等容器的方法

GDB中print方法并不能直接打印STL容器中保存的变量&#xff0c;其实只要http://www.yolinux.com/TUTORIALS/src/dbinit_stl_views-1.03.txt这个文件保存为~/.gdbinit 就可以使用它提供的方法方便调试容器 指定启动文件&#xff1a;~/.gdbinit&#xff0c;下面的方法任选其一。…...

python stomp 转发activemq topic消息

import pysimplestomp 连接到ActiveMQ的Topic&#xff1a; # 连接ActiveMQ服务器 server "tcp://localhost:61613" topic "/topic/your_topic"# 连接到ActiveMQ的Topic destination f"destination://{topic}" connection pysimplestomp.con…...

Spring Boot使用AOP

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

C语言通过IXMLHttpRequest以get或post方式发送http请求获取服务器文本或xml数据

做过网页设计的人应该都知道ajax。 Ajax即Asynchronous Javascript And XML&#xff08;异步的JavaScript和XML&#xff09;。使用Ajax的最大优点&#xff0c;就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作&#xff0c;并避免了在网络上发…...

QtRVSim(二)一个 RISC-V 程序的解码流程

继上一篇文章简单代码分析后&#xff0c;本文主要调研如何实现对指令的解析运行。 调试配置 使用 gdb 工具跟踪调试运行。 c_cpp_properties.json 项目配置&#xff1a; {"name": "QtRvSim","includePath": ["${workspaceFolder}/**&quo…...

x-cmd pkg | httpx - 为 Python 设计的下一代 HTTP 客户端库

目录 简介首次用户功能特点进一步探索 简介 HTTPX 是一个为 Python 设计的下一代 HTTP 客户端库&#xff0c;由 Tom Christie 创建。它提供了同步和异步的 API&#xff0c;并支持 HTTP/1.1 和 HTTP/2 协议。与 Requests 库类似&#xff0c;但增加了对异步请求的支持和 HTTP/2 …...

代码随想录算法训练营第四十二天(动态规划篇)|62. 不同路径

62. 不同路径 题目链接&#xff1a;62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 思路 dp[i][j]: 从0到位置[i, j]共有dp[i][j]条路径。 dp[i][j] dp[i-1][j] dp[i][j-1] 到位置[i,j]&#xff0c;可以从它的上面或者左边来&#xff0c;所以路径和为这两个方向的路…...

YOLO 全面回顾:从最初的YOLOv1到最新的YOLOv8、YOLO-NAS,以及整合了 Transformers 的 YOLO

YOLO 全面回顾 综述评估指标YOLO v1YOLO v2YOLO v3YOLO v4YOLOv5 与 Scaled-YOLOv4 YOLORYOLOXYOLOv6YOLOv7DAMO-YOLOYOLOv8PP-YOLO, PP-YOLOv2, and PP-YOLOEYOLO-NASYOLO with Transformers 综述 论文&#xff1a;https://arxiv.org/pdf/2304.00501.pdf 代码&#xff1a;gi…...

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心,Kotlin(2)

Android双指缩放ScaleGestureDetector检测放大因子大图移动到双指中心点ImageView区域中心&#xff0c;Kotlin&#xff08;2&#xff09; 在 Android ScaleGestureDetector检测双指缩放Bitmap基于Matrix动画移动到双指捏合中心点ImageView区域中心&#xff0c;Kotlin-CSDN博客 …...

同为科技(TOWE)自动控制循环定时插座

随着科技的发展&#xff0c;智能化家居已成为我们生活的重要组成部分。作为国内领先的智能家居品牌&#xff0c;同为科技&#xff08;TOWE&#xff09;推出的自动控制循环定时插座&#xff0c;无疑将科技与生活完美地结合在一起。 1.外观设计 同为科技&#xff08;TOWE&#x…...

游戏设计模式

单列模式 概念 单例模式是一种创建型设计模式&#xff0c;可以保证一个类只有一个实例&#xff0c;并提供一个访问该实例的全局节点。 优点 可以派生&#xff1a;在单例类的实例构造函数中可以设置以允许子类派生。受控访问&#xff1a;因为单例类封装他的唯一实例&#xf…...

CUBEMX与FreeRTOS在Arm Compiler 6下的配置方法

在嵌入式开发中&#xff0c;STM32是一种广泛使用的微控制器。为了提高开发效率&#xff0c;我们通常会利用ST公司提供的STM32CubeMX工具来配置硬件&#xff0c;并结合FreeRTOS这一实时操作系统来进行多任务处理。本文将深入探讨如何在这一框架下&#xff0c;使用Arm Compiler 6…...

Android Studio 提示Use app:drawableStartCompat instead of android:drawableStart

每次提交代码时&#xff0c;AS这个老妈子总爱唠叨一堆warning&#xff0c;这些Warning都在讲什么&#xff1f; 1.Use app:drawableStartCompat instead of android:drawableStart 在Android开发中&#xff0c;android:drawableStart和app:drawableStartCompat是两个用于设置…...

C# wpf 实现任意控件(包括窗口)更多调整大小功能

WPF拖动改变大小系列 第一节 Grid内控件拖动调整大小 第二节 Canvas内控件拖动调整大小 第三节 窗口拖动调整大小 第四节 附加属性实现拖动调整大小 第五章 拓展更多调整大小功能&#xff08;本章&#xff09; 文章目录 WPF拖动改变大小系列前言一、添加的功能1、任意控件Drag…...

Vue+OpenLayers7入门到实战:快速搭建Vue+OpenLayers7地图脚手架项目。从零开始构建Vue项目并整合OpenLayers7.5.2

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章针对Vue初学者,对Vue不熟悉,甚至还不会Vue的入门学生读者。 本章会详细讲解从NodeJS环境到npm环境的各个步骤,再到使用vue-cli脚手架快速生成项目,以及添加OpenLayers7地图库依赖,编写简单的xyz高德地图显示…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

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

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

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...