2026年4月8日 研究日志¶

今天在做明天出门的材料准备,还参加了研究生展示会议,主要项目的进度一点都没有推进(摊手)。不过前两天都已经把要参会的摘要写完发给老师了,摸两天鱼也没事吧(笑)。总之今天给大家放点存货,总结一下Python中文本输出的几种办法。

给与使用者信息的几种办法:¶

1. print() —— 最基础、最直接的输出方式¶

适用场景:¶

  • 脚本运行时的普通信息

  • 简单调试

  • 教学示例

  • 快速原型

特点:¶

  • 无需导入模块

  • 自动换行

  • 输出到标准输出(stdout)

示例:¶

In [ ]:
print("Processing completed.")
print(f"Result: {value}")

2. logging 模块 —— 专业可控、可扩展的日志系统¶

适用场景:¶

  • 中大型项目

  • 需要区分日志等级(DEBUG/INFO/WARNING/ERROR/CRITICAL)

  • 需要输出到文件、终端、远程日志系统

  • 需要可配置格式(时间戳、模块名、行号等)

特点:¶

  • 可配置性强

  • 可同时输出到多个 handler

  • 可禁用或过滤日志

示例:¶

In [ ]:
import logging

logging.basicConfig(level=logging.INFO)
logging.info("Task started")
logging.warning("Low disk space")
logging.error("Failed to load configuration")

3. warnings 模块 —— 用于提醒用户潜在问题¶

适用场景:¶

  • API 即将弃用

  • 参数不推荐使用

  • 用户行为可能导致错误但程序仍可继续运行

特点:¶

  • 不等同于异常

  • 默认只显示一次

  • 可被用户过滤

示例:¶

In [ ]:
import warnings

warnings.warn("This function will be removed in future versions.", DeprecationWarning)

4. raise —— 用于抛出异常并终止执行¶

适用场景:¶

  • 输入不合法

  • 程序无法继续运行

  • 必须让调用者处理错误

特点:¶

  • 会立即中断当前函数

  • 可自定义异常类型与信息

示例:¶

In [ ]:
if n < 0:
    raise ValueError("n must be non-negative")

5. sys.stderr.write() —— 输出错误信息但不中断程序¶

适用场景:¶

  • CLI 工具

  • 需要将错误信息与正常输出分离

  • 需要避免自动换行

特点:¶

  • 输出到标准错误(stderr)

  • 不会自动换行

  • 不会中断程序

示例:¶

In [ ]:
import sys

sys.stderr.write("Warning: configuration file not found\n")

6. rich 等第三方库 —— 美观、可视化输出¶

适用场景:¶

  • CLI 工具

  • 需要彩色输出、表格、进度条

  • 需要更好的用户体验

示例:¶

In [ ]:
from rich import print

print("[bold green]Task completed successfully![/bold green]")

7. 文本模板(str.format / f-string / Template)—— 构建复杂文本¶

适用场景:¶

  • 生成报告

  • 构建多行提示信息

  • 需要可复用模板

示例(f-string):¶

In [ ]:
name = "Alice"
msg = f"Hello, {name}. Welcome!"

示例(Template):¶

In [ ]:
from string import Template

t = Template("Hello, $name!")
print(t.substitute(name="Alice"))
需求 推荐方式
简单输出 print()
需要日志等级、可配置性 logging
提醒用户但不中断程序 warnings
输入非法、必须终止 raise
错误输出但不中断 sys.stderr.write()
美观 CLI、彩色输出 rich / colorama
构建复杂文本模板 f-string / Template