引言
在Python编程中,文件操作与数据库交互是构建复杂应用的核心技能。无论是处理本地数据、管理多媒体文件,还是与数据库协同工作,掌握这些技术都能显著提升开发效率。本文将基于课程内容,深入解析Python中文件操作与数据库交互的关键知识点,并通过实战案例帮助读者巩固所学。
一、Python文件操作详解
1. os模块与路径处理
os模块是操作系统接口的桥梁,提供文件与目录的管理功能。例如:
- 路径拼接:使用
os.path.join()避免跨平台路径问题。 - 文件夹操作:创建目录
os.makedirs()、删除os.rmdir()、遍历os.listdir()。 - 环境变量:通过
os.environ访问系统环境变量。
示例代码:
import os
# 创建多级目录
os.makedirs("test_folder/sub_folder", exist_ok=True)
# 判断路径是否存在
if os.path.exists("test_folder"):
print("目录已存在")
2. 文件读写与with语句
文件操作的核心是open()函数,配合不同的模式(r/w/a)控制读写行为。但手动管理文件关闭容易出错,推荐使用with语句自动释放资源。
模式对比:
| 模式 | 描述 | 文件指针位置 | 是否清空内容 |
|---|---|---|---|
r | 只读 | 文件开头 | 否 |
w | 写入 | 文件开头 | 是 |
a | 追加 | 文件末尾 | 否 |
安全写法:
with open("example.txt", "w") as f:
f.write("Hello, Python!")
# 文件自动关闭,无需手动调用f.close()
3. 实战案例:批量重命名文件
假设视频文件名中包含冗余信息(如括号内的内容),需批量清理:
import os
def clean_filenames(folder):
for root, dirs, files in os.walk(folder):
for file in files:
new_name = file.split("(", 1)[0].strip() # 截取括号前部分
if new_name != file:
os.rename(os.path.join(root, file), os.path.join(root, new_name))
clean_filenames("video_folder")
此案例结合os.walk()遍历目录,利用字符串分割实现文件名清洗。
二、Python数据库操作指南
1. 数据库连接与基础操作
使用pymysql库连接MySQL数据库,执行SQL语句的关键步骤:
- 连接数据库:指定主机、端口、用户名等参数。
- 创建游标:通过
cursor()执行SQL。 - 提交/回滚:写操作需
commit(),异常时rollback()。
基础代码:
import pymysql
db = pymysql.connect(
host="localhost",
port=3306,
user="root",
password="123456",
database="mydb1"
)
cur = db.cursor()
cur.execute("SELECT * FROM users")
print(cur.fetchall())
2. 封装数据库操作
重复的数据库操作可通过类封装简化流程。以下示例定义了一个通用数据库工具类:
class DB:
def __init__(self, **kwargs):
self.db = pymysql.connect(**kwargs)
self.cur = self.db.cursor()
def execute(self, sql, params=None):
try:
self.cur.execute(sql, params)
self.db.commit()
except Exception as e:
print(e)
self.db.rollback()
def query_all(self, sql):
self.cur.execute(sql)
return self.cur.fetchall()
def __del__(self):
self.cur.close()
self.db.close()
使用示例:
db_config = {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "123456",
"database": "mydb1"
}
db = DB(**db_config)
db.execute("UPDATE accounts SET balance = balance - %s WHERE user = %s", (100, "test_user"))
三、实用技巧:解包操作符
在数据库配置或函数参数传递中,解包操作符(*/**)能提升代码简洁性:
def connect_db(host, port, user, password, database):
print(f"Connecting to {host}:{port}...")
connect_db(**db_config) # 字典解包为关键字参数
结语
从文件读写到数据库交互,Python提供了丰富的工具链支持。通过os/os.path模块高效管理文件,结合with语句确保资源安全;利用pymysql与封装类简化数据库操作,可大幅提升开发效率。建议读者结合实战案例(如批量文件处理、数据库自动化脚本)深化理解,逐步构建自己的工具库。
延伸思考:如何将文件操作与数据库交互结合?例如,将日志文件内容批量导入数据库,或从数据库导出数据生成报告。欢迎在评论区分享你的创意应用场景!

1344

被折叠的 条评论
为什么被折叠?



