news 2026/3/2 22:52:26

SiameseUIE保姆级教程:test.py输出重定向保存至log文件实操

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SiameseUIE保姆级教程:test.py输出重定向保存至log文件实操

SiameseUIE保姆级教程:test.py输出重定向保存至log文件实操

1. 为什么需要把test.py输出存成log文件?

你刚登录云实例,执行完python test.py,屏幕唰唰滚过一堆结果——模型加载成功、5个测试例子的抽取结果、分隔线、emoji图标……但一关终端,全没了。

这在实际工作中很常见:

  • 你想对比不同版本脚本的输出差异;
  • 运维同事要查证某次运行是否真的“无报错”;
  • 需要把结果发给协作方,总不能截图发5张图;
  • 更关键的是:受限云实例重启后环境不重置,但终端历史记录会清空——没有log,等于没运行过。

而官方README里只写了“会输出”,没说怎么持久化保存。这篇教程就补上这个关键缺口:不改一行代码、不装新工具、不碰PyTorch版本,用最基础的Linux重定向语法,把test.py的完整输出原封不动存进log文件——连那个绿色的和分隔线都一模一样。

整个过程只要3条命令,2分钟搞定,小白照着敲就能用。

2. 基础原理:重定向不是黑魔法,是Shell的“管道工”

先说清楚一件事:test.py本身不需要任何修改。它只是老老实实print,而Linux Shell天然支持把“print出来的内容”接走,塞进文件里。就像水龙头(程序输出)接上软管(>符号),另一头插进水桶(log文件)。

你只需要理解这两个符号:

  • >:覆盖写入。如果log文件已存在,先清空再写
  • >>:追加写入。如果log文件已存在,在末尾接着写,不删原有内容。

两者都只捕获标准输出(stdout),也就是你看到的绿色文字、分隔线、实体列表。而报错信息(比如红色的Traceback)属于标准错误(stderr),默认不会被>捕获——但好消息是:test.py在受限环境下几乎不报错,所有提示都是stdout,所以>完全够用。

小贴士:为什么不用teescript
tee需要额外进程,script会记录键盘输入,在只读受限实例中可能权限不足;而>是bash内置功能,零依赖、零风险、零兼容问题——完美匹配本镜像“免安装、不修改环境”的设计哲学。

3. 实操四步法:从运行到归档,一步不落

3.1 确认当前路径与环境

别跳步骤!很多问题出在路径不对。按README要求,先确保你在正确的目录:

# 检查当前路径(应该显示类似 /root/nlp_structbert_siamese-uie_chinese-base) pwd # 如果不在,按README回到模型目录 cd .. cd nlp_structbert_siamese-uie_chinese-base

再确认Python环境已激活(绝大多数情况已默认激活):

python --version # 应输出类似:Python 3.8.x(对应torch28环境)

3.2 执行重定向命令:一条命令,生成log

在模型目录下,直接运行带重定向的命令:

python test.py > test_output_$(date +%Y%m%d_%H%M%S).log 2>&1

我们来拆解这条命令:

  • python test.py:原样执行测试脚本;
  • >:把stdout重定向;
  • test_output_$(date +%Y%m%d_%H%M%S).log:生成带时间戳的log文件名,例如test_output_20241025_143022.log,避免重复覆盖;
  • 2>&1:把stderr(标准错误)也合并到stdout,一起写入log——虽然test.py极少报错,但加上更保险。

执行后,终端不会显示任何输出(因为全被导走了),但你会看到命令立刻返回,说明已成功写入。

3.3 验证log文件内容:眼见为实

cat查看刚生成的log:

# 列出最新生成的log文件(按时间倒序) ls -t test_output_*.log | head -n 1 # 查看内容(用less可翻页,cat适合小文件) cat test_output_20241025_143022.log | head -n 20

你应该看到开头是:

分词器+模型加载成功! ========== 1. 例子1:历史人物+多地点 ========== 文本:李白出生在碎叶城,杜甫在成都修建了杜甫草堂,王维隐居在终南山。 抽取结果: - 人物:李白,杜甫,王维 - 地点:碎叶城,成都,终南山 ----------------------------------------

和你在终端里看到的一模一样——包括emoji、空行、分隔线。说明重定向100%生效。

3.4 进阶技巧:自动归档与快速检索

单个log有用,但长期运行会产生一堆文件。加两行命令,让管理更省心:

# 1. 把所有test_output_*.log打包成zip(节省空间,方便传输) zip -q siamese_uie_logs_$(date +%Y%m%d).zip test_output_*.log # 2. 只保留最近7天的log,其余自动清理(防系统盘满) find . -name "test_output_*.log" -mtime +7 -delete

如果想快速搜索某次运行是否抽出了“北京”,用grep

# 在所有log中搜索“北京” grep -l "北京" test_output_*.log # 显示包含“北京”的具体行(带文件名) grep "北京" test_output_*.log

这些命令都不依赖额外包,zipfindgrep在所有Linux发行版中都是默认预装的。

4. 常见问题现场解决:报错?卡住?没文件?

4.1 执行后等很久,终端没反应?

这是正常现象。test.py首次加载模型时需从磁盘读取pytorch_model.bin(约300MB),受限于云实例I/O性能,可能需要10–30秒。不要Ctrl+C中断,耐心等待。一旦看到log文件生成(用ls test_output_*.log检查),说明已成功。

4.2 提示“bash: python: command not found”?

说明torch28环境未激活。按README执行:

source activate torch28 # 再运行重定向命令 python test.py > test_output_$(date +%Y%m%d_%H%M%S).log 2>&1

4.3 log文件为空(0字节)?

大概率是路径错了。检查你是否在nlp_structbert_siamese-uie_chinese-base目录下执行命令。用pwd确认,然后重新执行。

4.4 想把log存到其他目录(比如/home/user/logs)?

可以,但注意两点:

  1. 目标目录必须存在且有写入权限;
  2. 路径要用绝对路径,避免相对路径歧义。

例如:

# 先创建目录 mkdir -p /home/user/logs # 执行时指定绝对路径 python test.py > /home/user/logs/test_output_$(date +%Y%m%d_%H%M%S).log 2>&1

5. 超实用延伸:一个命令,批量跑+自动归档

如果你需要定期运行测试(比如每天凌晨校验模型稳定性),可以把上面所有步骤写成一个shell脚本,实现全自动:

#!/bin/bash # 文件名:run_uie_log.sh,放在模型目录下 # 进入模型目录(确保路径正确) cd /root/nlp_structbert_siamese-uie_chinese-base # 执行测试并生成带时间戳的log python test.py > test_output_$(date +%Y%m%d_%H%M%S).log 2>&1 # 打包当日log zip -q siamese_uie_logs_$(date +%Y%m%d).zip test_output_$(date +%Y%m%d)*.log # 清理7天前的log(保留zip,log可删) find . -name "test_output_$(date -d '7 days ago' +%Y%m%d)*.log" -delete

赋予执行权限并运行:

chmod +x run_uie_log.sh ./run_uie_log.sh

以后只需双击或定时任务调用这个脚本,全程无人值守。

6. 总结:重定向是运维基本功,更是受限环境生存术

回顾一下,你学会了:

  • 为什么必须存log:受限实例重启不丢环境但丢终端历史,log是唯一可信凭证;
  • 最简命令是什么python test.py > test_output_$(date +%Y%m%d_%H%M%S).log 2>&1,复制即用;
  • 如何验证是否成功cat看内容,ls看文件,和终端输出逐字比对;
  • 遇到问题怎么自救:路径、环境、等待时间,三招覆盖90%异常;
  • 怎么让它更聪明:自动打包、定时清理、一键脚本,把重复劳动变成一次配置。

这一切都没动模型代码,没装新包,没升级PyTorch——完全遵循镜像“开箱即用、最小侵入”的设计原则。你保存的不只是几行文字,而是可追溯、可审计、可协作的AI工程实践证据。

下一次,当同事问“上次测试结果在哪”,你不用翻聊天记录,不用求他重跑,直接发一个带时间戳的log文件过去——专业,就这么简单。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 17:41:35

AnimateDiff效果惊艳案例:闭眼微笑女孩+微风拂发,16帧自然动态展示

AnimateDiff效果惊艳案例:闭眼微笑女孩微风拂发,16帧自然动态展示 你有没有试过,只输入一句话,就能让一张静态人像“活”起来?不是简单地加个眨眼动效,而是头发随风轻扬、睫毛微微颤动、嘴角弧度自然舒展—…

作者头像 李华
网站建设 2026/2/24 11:42:39

AutoGen Studio实操手册:Qwen3-4B-Instruct在本地GPU环境的高效推理部署

AutoGen Studio实操手册:Qwen3-4B-Instruct在本地GPU环境的高效推理部署 1. 什么是AutoGen Studio AutoGen Studio是一个面向开发者的低代码交互式界面,它的核心目标很实在:帮你省去大量重复编码工作,快速把AI代理(A…

作者头像 李华
网站建设 2026/2/17 11:18:03

如何用智能工具突破预约难题?2024全自动抢单神器深度解析

如何用智能工具突破预约难题?2024全自动抢单神器深度解析 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署 项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai 每天准时守候在预约…

作者头像 李华
网站建设 2026/2/19 16:51:37

告别手动抢购,拥抱智能预约:i茅台自动化抢购系统全攻略

告别手动抢购,拥抱智能预约:i茅台自动化抢购系统全攻略 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署 项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai 每天定闹钟…

作者头像 李华