You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sbatch运行Slurm作业时输出文件回车符无效

解决Slurm作业中Python回车符(\r)输出异常的问题

核心原因

Python在非终端环境(比如Slurm作业)下默认启用输出缓冲,导致\r(回车符)的行覆盖效果无法实时生效,最终所有中间输出都被保留到out.txt里。

具体解决办法

  • 强制Python无缓冲输出
    运行脚本时加上-u参数关闭缓冲:

    python -u test.py
    

    或者在job.sh里先设置环境变量:

    export PYTHONUNBUFFERED=1
    python test.py
    
  • 修正Python的print语句
    把手动拼接\r和end=''的写法改成直接指定end='\r',避免冗余和缓冲问题:

    print(message, end='\r')
    
  • 用stdbuf强制行缓冲
    在job.sh里用stdbuf命令强制输出按行缓冲,让Slurm能正确识别\r:

    stdbuf -oL python test.py > out.txt
    
  • 后期清理已生成的out.txt
    如果已经得到包含冗余行的输出文件,用sed命令处理,只保留每行最后一次覆盖的内容:

    sed -n '/\r/{:a;N;s/\n.*\r//;ba};p' out.txt > cleaned_out.txt
    

内容的提问来源于stack exchange,提问作者user1506145

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:15:48