2017-09-04 19 views
0

我需要運行另一個python腳本,它在我當前使用的腳本中生成數據。我用subprocess來運行它:如何使用另一個交付的子進程運行python腳本

cmd = 'python /home/usr/script.py arg1 arg2 arg3' 
subprocess.Popen(cmd, shell=True) 

但是有問題。上一個腳本在'當前目錄'中生成很少的目錄,這意味着它在運行的目錄中。而且我不能修改以前的腳本,因爲它不是我的。如何將當前目錄設置爲我想要獲取數據的目錄? \n
另一個小問題是當我運行subprocess.Popen()時,我的腳本沒有結束。我應該用另一種方式運行嗎?

回答

1

最好的方法是使用subprocess.call代替(等待&終止,Popen未經有關部門wait()可以創建一個殭屍進程),並使用cwd=參數指定當前目錄爲子:

cmd = ['python','/home/usr/script.py','arg1','arg2','arg3'] 
return_code = subprocess.call(cmd, cwd="/some/dir") 

(也傳遞命令的列表,拖放shell=True,你不需要在這裏)

+0

我找到'os.chdir()'方法作爲解決辦法,但你作爲方法參數的路徑是更好的。 Ty求助。 –

+1

是的,應該避免使用'os.chdir()',因爲它會改變當前進程的當前目錄(還有其他線程,如果有的話) –

相關問題