【问题标题】:Extra line in the terminal introduced by PopenPopen 引入的终端中的额外行
【发布时间】:2016-10-25 09:36:24
【问题描述】:

我有以下脚本尝试将作业提交到 PBS 队列。

import sys
import os
import subprocess

inpfile="sim.input"
qscript="run.sh"

#2.1 create a directory to launch the script from
dir="test"
os.system("mkdir {}".format(dir))
os.system("cp {} {} {}".format(qscript,inpfile,dir))


#2.2 launch the simulation
subprocess.Popen(["qsub",qscript],cwd=dir)

脚本有效,但是在我点击Enter 后,我在终端中得到一个空行,所以我必须再次点击Enter 才能恢复我的提示。如果我这样做subprocess.call(),就不会发生这种情况。所以,问题是如何摆脱那个newline?以下是我在终端中看到的:

dude@machine$ python submit01.py 
dude@machine$ 3463.machine.com

dude@machine$ 

编辑:脚本run.sh

#!/bin/bash
#PBS -S /bin/bash
#PBS -N job
#PBS -l nodes=1:ppn=1
#PBS -j oe
#PBS -V
cd $PBS_O_WORKDIR
pwd

sim.input 可以是任何文件。

【问题讨论】:

  • 请提供重现结果的脚本。

标签: python unix subprocess


【解决方案1】:

我想我找到了答案here

subprocess.Popen() 的空行来自我没有指定标准输出。如果没有指定,终端中有一个空行,据我所知,它是无害的。所以,代码可能是:

with open("output.txt","w") as out:
    #2.2 launch the simulation
    subprocess.Popen(["qsub",qscript],cwd=dir,stdout=out)

并且不会给出空行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-23
    • 2019-12-22
    • 2020-09-27
    • 1970-01-01
    • 2011-10-08
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多