目标:掌握CSV/JSON文件读写,实现自动化数据备份与日志记录
一、CSV文件操作(销售数据备份)
1. 写入CSV文件
import csv
# 销售数据
sales_data = [
["日期", "商品", "销量", "销售额"],
["2024-03-01", "手机", 15, 59985],
["2024-03-01", "笔记本", 8, 71992]
]
with open("daily_sales.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(sales_data) # 注意是writerows(多行写入)
2. 读取CSV文件(含数据处理)
import csv
total_sales = 0
with open("daily_sales.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
next(reader) # 跳过标题行
for row in reader:
total_sales += float(row[3]) # 累加销售额列
print(f"当日总销售额:{total_sales:.2f}元")
二、JSON文件操作(配置管理)
1. 保存系统配置
import json
config = {
"backup_path": "/data/backups",
"max_log_days": 30,
"alert_email": "admin@company.com"
}
with open("config.json", "w", encoding="utf-8") as f:
json.dump(config, f, indent=2) # indent美化格式
2. 读取配置
with open("config.json", "r", encoding="utf-8") as f:
config = json.load(f)
print(f"备份路径:{config['backup_path']}")
三、企业级实战:自动备份与异常日志
1. 需求说明
- 每小时备份销售数据到CSV(增量追加)
- 记录程序运行异常到error.log
2. 完整实现
import csv
import json
from datetime import datetime
def backup_sales(new_data):
"""增量备份销售数据"""
try:
with open("sales_backup.csv", "a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
# 添加备份时间戳
new_data_with_time = [datetime.now().strftime("%Y-%m-%d %H:%M")] + new_data
writer.writerow(new_data_with_time)
except Exception as e:
log_error(f"备份失败: {str(e)}")
def log_error(message):
"""记录错误日志"""
with open("error.log", "a", encoding="utf-8") as f:
log_entry = {
"timestamp": datetime.now().isoformat(),
"error": message
}
f.write(json.dumps(log_entry) + "\n")
# 模拟数据更新
backup_sales(["平板", 12, 35988])
四、今日任务清单
- 修改备份程序,添加CSV标题行(仅首次运行时创建)
- 实现JSON配置读取,动态设置备份路径
- 扩展错误日志,记录发生错误的原始数据
高频问题排查
- 文件乱码 → 确保统一使用
utf-8编码 - 权限拒绝 → 检查文件是否被其他程序占用
- 路径错误 → 使用绝对路径或
os.path模块处理路径