如何同时保存终端输出到TXT并显示?解决plt.show()报错
一、终端输出同时存文件并显示
用>重定向只会把标准输出(stdout)写入文件,终端看不到内容。改用tee命令即可同时实现显示和保存:
- 仅保存标准输出:
python3 script_name | tee output.txt - 同时保存标准输出和错误输出(比如脚本报错信息):
python3 script_name 2>&1 | tee output.txt
2>&1的作用是把错误输出(stderr,文件描述符2)重定向到标准输出(stdout,文件描述符1),让tee能捕获所有输出内容。
二、Matplotlib无法显示图像(agg后端问题)
尽管安装了tkinter,Matplotlib可能未自动切换到GUI后端,可通过以下方式解决:
1. 临时在脚本中指定后端
在导入matplotlib.pyplot之前添加代码,强制指定Tkinter后端:
import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt
2. 永久配置Matplotlib后端
修改Matplotlib配置文件:
- 找到用户级配置文件(
~/.config/matplotlib/matplotlibrc)或系统级配置文件(/etc/matplotlibrc) - 找到
backend项,修改为:backend: TkAgg
保存后,所有Matplotlib脚本默认都会使用TkAgg后端。
3. 验证Tkinter可用性
运行以下命令测试Tkinter是否正常工作:
python3 -c "import tkinter; tkinter._test()"
如果弹出测试窗口,说明Tkinter正常;若报错,可能需要重新安装Tkinter(即使版本为8.6,也可能存在环境关联问题)。
三、Torch命名张量实验性功能警告
该警告提示你正在使用PyTorch的实验性功能(命名张量),不影响脚本运行。若需关闭警告:
- 在脚本开头添加:
import warnings warnings.filterwarnings("ignore", category=UserWarning, module="torch") - 或通过命令行参数运行脚本:
python3 -W ignore::UserWarning script_name
注意:除非确认该警告不影响功能,否则不建议关闭,实验性功能可能存在未知问题。
附:你遇到的警告信息翻译
用户警告:命名张量及其所有相关API是实验性功能,可能会发生变更。在它们作为稳定版本发布之前,请不要用于任何重要用途。(内部触发位置:/tmp/pip-req-build-19kunu9c/c10/core/TensorImpl.h:1156.)
return torch.max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode)
/home/pytorch_ArT.py:141: 用户警告:Matplotlib当前使用agg(一个非GUI后端),因此无法显示图像。
plt.show()
内容的提问来源于stack exchange,提问作者NJR11

