首先说下如何指定各种脚本的工作路径(shell, python, R)
- qsub可以通過-d指定作業脚本運行目錄
- R, python脚本:上一级调用时在命令行参数里指明运行路径
下面举例说明如何提交pythonCodePath/job.py(job.py里面还调用了)
- 通过qsub 提交路径为shellCodePath/job.sh的工作脚本,指明工作路径(也就是python脚本的工作路径)为workDirPython
qsub -d workDirPython shellCodePath/job.sh
- job.sh中调用python script
#!/bin/bash
#PBS -l nodes=1:ppn=6
#PBS -q short
#PBS -V
python pythonCodePath/job.py `pwd`
python pythonCodePath/last.py
两点注意
①pwd
通过 -d workDirPython 指明
②last.py是一个空脚本,用于处理python脚本在shell里没有执行的情况!(由于最后一句python脚本不被执行)
在python脚本中读取命令行参数也很简单
import sys
...
PATH_WORK = sys.argv[1] + "/" # Gets working directory from command args
...
- 在python脚本里可以通过命令的方式调用R脚本,例如在job.py里面调用RCodePath/test.R,并指明test.R的工作路径为workDirR
import os
...
command_R = "Rscript " + "RCodePath/test.R" \
+ " " + workDirR
os.system(command_R)
...
你可以指明任意多的参数
在R脚本里通过接受命令行参数得到运行环境
arguments = commandArgs(T)
path.working = arguments[1]
setwd(path.working)
网友评论