我有一個檔案:“abc”,它是一個可執行檔案。我想通過 Phthon 或 windows CMD 執行它。
如果我寫代碼:
subprocess.Popen('-a -b -c', creationflags=0x08, shell=True, executable="C:\\abc")
然后,abc 執行,但 params(-a -b -c) 被忽略
所以……我怎樣才能重新愛上它?
uj5u.com熱心網友回復:
為什么不將您的代碼更改為以下版本
args = ['C:\\abc', '-a', '-b', '-c']
p = subprocess.Popen(' '.join(args), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
或者沒有shell=True你可以進一步減少它
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
或者您可以使用另一種方法從您的 exe 獲取輸出并將引數傳遞給它
Output = subprocess.check_output(' '.join(args), shell=True).decode()
uj5u.com熱心網友回復:
在 PowerShell 中
& "C:\abc.exe"
uj5u.com熱心網友回復:
最后,我自己找到了答案,就是使用win32process.CreateProcess
感謝其他作者,但他們的答案是錯誤的。
正確答案是:
win32process.CreateProcess(r"C:\abc", "-a -b -c", None, None, 0, 0, None, None, win32process.STARTUPINFO())
以下答案不起作用:
subprocess.Popen('-a -b -c', creationflags=0x08, shell=True, executable="C:\\abc")
#or
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
也許我真的不知道如何使用subprocess,但Windows真的很特別。沒有后綴的可執行檔案不能直接在命令列上執行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316453.html
