我想在Python腳本像這樣運行命令:的Python:subprocess.call錯誤「命令未找到」
subprocess.call("ghdl -a --ieee=synopsys -fexplicit " + testBenchFile + " >> a_log.txt", shell = True)
隨着「testBenchFile是一個字符串,但它拋出一個」命令未找到「錯誤
我在做什麼錯
我想在Python腳本像這樣運行命令:的Python:subprocess.call錯誤「命令未找到」
subprocess.call("ghdl -a --ieee=synopsys -fexplicit " + testBenchFile + " >> a_log.txt", shell = True)
隨着「testBenchFile是一個字符串,但它拋出一個」命令未找到「錯誤
我在做什麼錯
嘗試提供ARGS爲一個列表
subprocess.call(["ghdl", "-a", "--ieee=synopsys", "-fexplicit", testBenchFile, ">>", "a_log.txt"], shell = True)
變化:?
subprocess.call("ghdl -a --ieee=synopsys -fexplicit " + testBenchFile + " >> a_log.txt", shell = True)
到:
subprocess.call(["ghdl", "-a", "--ieee=synopsys", "-fexplicit", testBenchFile, ">>", "a_log.txt"], shell = True)
您還可以更 「Python化」,並與您的日誌文件發揮不錯:
log_file = open("a_log.txt", "a")
subprocess.call(["ghdl", "-a", "--ieee=synopsys", "-fexplicit", testBenchFile], shell = True, stdout=log_file)
隨着您要重定向的輸出stdout
參數你的命令,像>
。但是,由於文件使用模式"a"
打開,因此您正在模擬>>
。
-1,那是錯誤的。因爲他使用'shell = True',他***可以使用字符串而不是序列作爲第一個參數:「[如果傳遞單個字符串,shell必須爲True(見下文),否則字符串必須只需簡單地命名要執行的程序而不指定任何參數。](http://docs.python.org/3.3/library/subprocess.html#frequently-used-arguments)「 – miracle173
是的,你是對的。回答編輯。 –
ghdl位於何處?它在你的PATH中嗎? – mkriheli
是的,它在我的路徑中。另外,如果我直接從終端運行命令(複製粘貼輸出的print(「ghdl ...」+ testBenchFile +「>> ...」)),它運行沒有問題。 – DennisVDB
你能展示確切的回溯? –