本文目录导读:

在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就足够了。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播