首页 > 解决方案 > 通过循环提交多个作业时权限被拒绝

问题描述

我正在尝试使用 python 代码创建多个作业并将其提交到高斯。当我运行此代码时:

for iframe in mols_xyz.trajectory:
    mol_ind = iframe.frame + 1
    g16_input = input_dir / f'{mol_base}_{mol_ind}.sh'
    with g16_input.open('w') as fn:
        fn.write('#!/bin/sh -l\n')
        fn.write('\n')
        fn.write('#$ -pe omp 8\n')
        fn.write('#$ -P porcogrp\n')
        fn.write('#$ -l h_rt=24:00:00\n')
        fn.write('#$ -j y\n')
        fn.write('\n')
        fn.write('module load gaussian/16.A.03\n')
        fn.write('\n')
        fn.write(f'HOMEFOL={str(input_dir)}\n')
        fn.write(f'INPUTFILE={str(input_dir)}/{mol_base}_{mol_ind}.com\n')
        fn.write(f'OUTFILE={str(input_dir)}/{mol_base}_{mol_ind}.log\n')
        fn.write('\n')
        fn.write('SCRATCHDIR=/scratch/$USER/$JOB_ID\n')
        fn.write('mkdir -p $SCRATCHDIR\n')
        fn.write('cd $SCRATCHDIR\n')
        fn.write('g16 $HOMEFOL/$INPUTFILE > $HOMEFOL/$OUTFILE')

        os.system(qsub g16_input)

结果是:

[zpowers@scc1 Test]$ python gaussian_Input.py
  File "gaussian_Input.py", line 59
    os.system(qsub g16_input)
                           ^
SyntaxError: invalid syntax

真的卡在这里,任何帮助将不胜感激!

标签: pythonos.system

解决方案


您需要在系统调用周围加上引号。命令是一个字符串:

os.system('qsub g16_input')

请参阅文档:https ://docs.python.org/3.8/library/os.html#os.system


推荐阅读