我想从python2x执行程序。从python调用带有可变参数的linux命令
在终端中,该作业将作为运行:
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")
因此,使用两种方法的两个,我怎么能调用该程序一变量名称作为输入和输出?
喜...感谢您的回复。它的工作正常,除了var_2应该是写入我的输出的文件。但是这是写输出到标准输出。我也尝试过'cmd = [....,var_1,>>“,var_2]'这也不起作用。 – BaRud
好的,请参阅我的编辑 – hd1
hd1, 这是给我错误'语法错误:无效语法'在'标准输出= var_2' – BaRud