2017-06-19 161 views
0

当我使用linux shell编写module load numeca/open/61_numeca_mpi时,我按下回车键,程序上传模块许可证,然后我写入fine,然后再次按Enter键。我写了一个Python脚本来做到这一点。如何从python脚本执行linux命令

import os 

os.system("module load numeca/open/61_numeca_mpi") 
os.system("fine") 

它上传模块的许可,但随后说

ERROR:105: Unable to locate a modulefile for 'fine'. 

有什么建议?

+0

的问题与你试过那是什么'os.system'打开每个命令都有一个新的shell,这意味着你发送的'fine'是在一个不同的shell中,然后是它的'module'命令 – EarthDragon

回答

0

尝试在同一个shell执行这两个命令,就像这样:

os.system("module load numeca/open/61_numeca_mpi && fine") 
+0

谢谢!!!!!!有用!! – costanza

1

尝试使用子模块:

import subprocess 
p= subprocess.Popen(['module','load numeca/open/61_numeca_mpi"'],stdout=subprocess.PIPE,stdin=subprocess.PIPE) 
p.stdin.write('fine') 
p.communicate()[0] 
p.stdin.close()