最省事方法是在运行配置的Interpreter options中添加-u >output.txt 2>&1,PyCharm启动时自动将stdout和stderr重定向至项目根目录下的指定TXT文件,-u确保无缓冲输出,适合临时调试导出。

运行配置里加 -u > output.txt 2>&1 最省事
不用改代码,适合临时导出、调试完就扔的场景。PyCharm 启动 Python 解释器时会把 stdout 和 stderr 全部写进你指定的文件。
-
-u强制无缓冲,避免输出卡在内存里不落盘(尤其长脚本容易丢尾行) -
> output.txt只重定向标准输出;加2>&1才能把报错也一并捕获 - 文件路径是相对于项目根目录的,不是脚本所在目录——别填绝对路径,除非你真需要
- 如果文件已存在,会被清空重写;想追加得用
>>,但 PyCharm 的 Interpreter options 不支持>>语法,得换其他方式
sys.stdout = open(...) 在代码里硬绑定最可控
适合需要动态命名、按日期生成文件、或只捕获部分 print 的情况。但必须在第一个 print() 之前执行,且注意资源释放。
- 写法示例:
import sys with open("run_20260731.log", "w", encoding="utf-8") as f: sys.stdout = f sys.stderr = f # 错误也一起抓 print("start") # 后续所有 print 都写进这个文件 - 别漏掉
encoding="utf-8",否则中文会乱码或抛UnicodeEncodeError -
with块结束时文件自动关闭,但sys.stdout不会自动还原——后续其他模块(比如 logging)可能受影响 - 如果脚本中途异常退出,
with仍能保证文件关闭,但重定向没机会还原;真要安全,得用try/finally手动恢复sys.stdout
Python Console 模式下勾选 Save console output to file… 适合交互调试
当你右键选 “Run ‘xxx’ in Python Console” 时,PyCharm 启动的是 IPython 实例,它的日志保存是会话级的,包含所有输入和输出,不只是你的脚本。
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- 路径要手动选,不能用变量或相对路径表达式,选完就固定了
- 文件内容包含
In [1]: …和Out[1]: …这类提示符,不适合做纯数据结果文件 - 如果脚本里用了
input(),Console 模式会卡住等你手动输,而普通 Run 模式直接报错——这点容易误判脚本行为 - 它不捕获
subprocess启动的外部命令输出,只管当前 Python 进程的sys.stdout
别踩 os.getcwd() 和工作目录的坑
PyCharm 默认以项目根目录为工作目录,但终端里运行同一脚本时 pwd 可能是任意位置。导出文件名写成 "result.txt" 看似简单,实际落地时经常找不到文件。
- 用
os.path.abspath("output.txt")打印一下路径,确认它真出现在你预期的位置 - 更稳妥的做法是写死绝对路径,比如
r"D:\myproject\logs\output.txt"(Windows)或/home/user/myproject/logs/output.txt(Linux/macOS) - 如果用
logging.FileHandler替代 print,记得设mode="a"避免每次覆盖,但 PyCharm 的运行配置重定向不支持追加模式
文件名和路径写错比逻辑错误更常导致“明明写了却没生成”,动手前先花十秒确认当前工作目录和目标路径是否真如你所想。

















