2016-11-21 46 views
0

我正在使用os.walk來瀏覽目錄(dir1)。當我在某些目錄中時,我將文件移動到解析程序所在的不同目錄(dir2)中。我正在嘗試在dir2中運行解析器程序,而不會中斷通過其他目錄的步驟。在我步行通過功能的適當位置在os.walk中間的另一個目錄中運行程序

subprocess.call("python3 parser_program", cwd=parser_location) 

我目前正在此。但是,我收到以下錯誤:

FileNotFoundError: [Errno 2] No such file or directory: 'python3 parserprogram.py' 

最終,運行解析器程序將需要一系列命令來調用Java程序;在我排除故障時,我只是使用簡化的Python程序作爲替身。我認爲我的問題是我沒有從subprocess.call函數中正確地調用參數,但我無法制作文檔的正面或反面。最初我使用os.chdir從一個目錄移動到另一個目錄,並且這個工作正常,直到它破壞os.walk到下一個目錄。如何運行一系列命令來調用另一個目錄中的文件,而不會中斷我的原始目錄中的os.walk? THX

回答

0

正如subprocess.run() documentation顯示的示例中,參數run()call()需要在列表:

subprocess.call(['python3', 'parser_program'], cwd=parser_location) 

但是,如果你使用shell=True,即,將其通過殼,你可以傳遞參數作爲單個字符串像你正在做的:不建議

subprocess.call("python3 parser_program", shell=True, cwd=parser_location) 

使用shell=True除非你真的需要外殼的功能,雖然。

此外,如果您使用Python 3.5+,則subprocess.run()是用於大多數調用的更好功能。

+0

謝謝 - 我也曾嘗試在列表中運行這些命令,但誤解了如何組織列表並收到與上述相同的錯誤。你的語法解決了這個問題。並感謝關於subprocess.run()的提示,我會研究它 –

相關問題