我有以下脚本尝试将作业提交到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
可以是任何文件。
答案 0 :(得分:1)
我想我找到了答案here
subprocess.Popen()的空行来自于我没有指定标准输出。如果未指定,则终端中有一个空行,据我所知,这是无害的。所以,代码可以是:
with open("output.txt","w") as out:
#2.2 launch the simulation
subprocess.Popen(["qsub",qscript],cwd=dir,stdout=out)
并且不会给出空行。