本文目录导读:

在Python中保存运行结果有多种方法,下面我详细介绍几种常用的方式:
保存到文本文件 (.txt)
使用 open() 函数
# 简单写入
results = [1, 2, 3, 4, 5]
with open('results.txt', 'w', encoding='utf-8') as f:
for result in results:
f.write(f"{result}\n")
# 追加写入 (不覆盖原内容)
with open('results.txt', 'a', encoding='utf-8') as f:
f.write("追加的内容\n")
保存到CSV文件 (.csv)
使用 csv 模块
import csv
data = [
['姓名', '年龄', '成绩'],
['张三', 20, 95],
['李四', 22, 88],
['王五', 21, 92]
]
# 写入CSV
with open('scores.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(data)
# 使用字典写入
with open('scores_dict.csv', 'w', newline='', encoding='utf-8') as f:
fieldnames = ['姓名', '年龄', '成绩']
writer = csv.DictWriter(f, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'姓名': '张三', '年龄': 20, '成绩': 95})
保存到JSON文件 (.json)
使用 json 模块
import json
data = {
'user': 'admin',
'scores': [95, 88, 92],
'settings': {
'theme': 'dark',
'language': 'zh'
}
}
# 保存为JSON
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
# 如果包含自定义对象
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def to_dict(self):
return {'name': self.name, 'age': self.age}
person = Person('张三', 20)
with open('person.json', 'w', encoding='utf-8') as f:
json.dump(person.to_dict(), f, ensure_ascii=False, indent=4)
保存到Excel文件 (.xlsx)
使用 pandas 库
import pandas as pd
# 创建DataFrame
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [20, 22, 21],
'成绩': [95, 88, 92]
})
# 保存到Excel
df.to_excel('results.xlsx', index=False, sheet_name='成绩表')
# 保存到多个工作表
with pd.ExcelWriter('multi_sheet.xlsx') as writer:
df.to_excel(writer, sheet_name='成绩表')
df.describe().to_excel(writer, sheet_name='统计信息')
保存到数据库
SQLite (轻量级)
import sqlite3
import pandas as pd
# 创建数据库连接
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS students (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER,
score REAL
)
''')
# 插入数据
data = [
('张三', 20, 95.5),
('李四', 22, 88.0),
('王五', 21, 92.3)
]
cursor.executemany('INSERT INTO students (name, age, score) VALUES (?, ?, ?)', data)
conn.commit()
# 使用pandas直接保存
df = pd.DataFrame(data, columns=['name', 'age', 'score'])
df.to_sql('students', conn, if_exists='append', index=False)
conn.close()
自动保存程序运行结果
重定向输出
import sys
from datetime import datetime
class OutputSaver:
"""自动保存所有输出到文件"""
def __init__(self, filename):
self.filename = filename
self.original_stdout = sys.stdout
def __enter__(self):
self.file = open(self.filename, 'a', encoding='utf-8')
sys.stdout = self.file
# 添加时间戳
print(f"\n--- 运行时间: {datetime.now()} ---")
return self
def __exit__(self, *args):
sys.stdout = self.original_stdout
self.file.close()
# 使用示例
with OutputSaver('run_log.txt'):
print("程序开始运行...")
x = 10
y = 20
print(f"计算结果: {x + y}")
print("程序运行结束")
推荐的完整案例
import pandas as pd
import json
from datetime import datetime
class TaskResult:
"""统一的结果保存类"""
def __init__(self, task_name):
self.task_name = task_name
self.results = []
self.timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
def add_result(self, data):
"""添加结果"""
self.results.append(data)
def save_to_csv(self, filename=None):
"""保存为CSV"""
if filename is None:
filename = f"{self.task_name}_{self.timestamp}.csv"
df = pd.DataFrame(self.results)
df.to_csv(filename, index=False, encoding='utf-8-sig')
print(f"结果已保存到: {filename}")
def save_to_json(self, filename=None):
"""保存为JSON"""
if filename is None:
filename = f"{self.task_name}_{self.timestamp}.json"
with open(filename, 'w', encoding='utf-8') as f:
json.dump(self.results, f, ensure_ascii=False, indent=2)
print(f"结果已保存到: {filename}")
def save_to_excel(self, filename=None):
"""保存为Excel"""
if filename is None:
filename = f"{self.task_name}_{self.timestamp}.xlsx"
df = pd.DataFrame(self.results)
df.to_excel(filename, index=False)
print(f"结果已保存到: {filename}")
# 使用示例
if __name__ == "__main__":
# 模拟计算结果
task = TaskResult("数据统计")
for i in range(10):
task.add_result({
'id': i + 1,
'value': i * 2,
'square': i ** 2,
'timestamp': datetime.now().isoformat()
})
# 保存结果
task.save_to_csv()
task.save_to_json()
task.save_to_excel()
选择建议
- 简单数据 → 文本文件 (.txt)
- 表格数据 → CSV 或 Excel (.csv, .xlsx)
- 复杂数据结构 → JSON (.json)
- 大规模数据 → 数据库 (SQLite, MySQL等)
- 日志记录 → 文本文件追加写入
- 数据分析 → CSV/Excel + pandas
根据你的具体需求选择合适的保存方式,如果需要长期存储和查询,推荐使用数据库;如果是简单的数据导出,CSV或JSON就足够了。