2012-06-15 95 views
1

我想在我的python代碼中使用subprocess.call調用模塊和模塊laod,這是類似這樣的。如何使用子進程運行命令模塊?

subprocess.call(['module avail calibre','&','module load calibre']) 

但是當我運行這段代碼,它返回:

OSERROR (2, '沒有這樣的文件或目錄')

任何幫助有關子?

回答

1

如果你嘗試運行這個shell命令:

$ module avail calibre & module load calibre 

與子嘗試:

subprocess.call(['module','avail','calibre','&','module','load','calibre']) 

或:

subprocess.call('module avail calibre & module load calibre',shell=True) 
+0

得到這個reult運行的第二個和第一個仍然給出相同的OSERROR/bin/sh:module:找不到命令 /bin/sh:calibredrv:command找不到 /bin/sh:module:command not found – Karan

+0

這意味着你的python解釋器找不到'module'可執行文件。你可以嘗試使用絕對路徑,例如:'subprocess.call(['/ abs/path/to/module','avail','calibre','&','/ abs/path/to/module' ,'load','calibre'])' – Enrico

+1

@Enrico該命令行預計會被shell解釋。它不會在沒有外殼的情況下按預期工作。在第一種情況下,'&'和後面的參數將作爲參數傳遞給「module」命令。 – Keith

相關問題