【发布时间】:2015-12-23 01:34:17
【问题描述】:
我正在尝试从 python2x 执行一个程序。
在终端中,作业将运行为:
mpirun -np 8 ~/WORK/scf Fe_SCF.inp > Fe_SCF.out
其中Fe_SCF.*是CWD中的输入和输出。
现在,我正在尝试从 python 脚本运行这一段。从那以后,我将它们定义为变量并尝试调用为:
call(["mpirun -np 8 ~/WORK/scf", scfin, scfout])
给出错误:
File "./triolith.py", line 38, in <module>
call(["mpirun -np 8 ~/WORK/scf", scfin, scfout])
File "/usr/lib64/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib64/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
使用真实文件名也不能解决问题:
call(["mpirun -np 8 ~/WORK/scf", "Fe_SCF.inp", "Fe_SCF.out"])
这给出了错误:
File "./triolith.py", line 38, in <module>
call(["mpirun -np 8 ~/WORK/scf", "Fe_SCF.inp", "Fe_SCF.out"])
File "/usr/lib64/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib64/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib64/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
我已经检查并可以确认,使用 os.system 正在使用“真实”文件名,但不是使用变量名:
os.system("mpirun -np 8 ~/WORK/scf scfin" )
那么,使用两种方法中的任何一种,我怎样才能以变量名作为输入和输出调用程序呢?
【问题讨论】:
标签: python command-line command