使用 Python 3.10.6 嘗試將引數傳遞給通過 subprocess.run 打開的命令列,我嘗試切換 shell=True/False,以及將第二個引數與輸入變數一起傳遞,但不走運。這是相關代碼:
cmds = (['cmd','echo hello'])
cmd_result = subprocess.run(cmds, shell=False, check=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True )
print(cmd_result.args)
['cmd', '回聲你好']
print(cmd_result.stdout)
Microsoft Windows [版本 10.0.19044.1889] (c) Microsoft Corporation。著作權所有。
C:\Users\oakne\Desktop\DiscordBots>
所以它似乎承認這兩個論點,它只是沒有對第二個論點做任何事情。任何指導表示贊賞
uj5u.com熱心網友回復:
如果你運行命令
cmd echo hello
在 CMD 提示符下,您不會得到hello.
要運行命令字串,您需要添加/C或/K。第一個運行命令字串并退出,第二個運行命令字串并保持打開狀態。如果沒有這些標志中的任何一個,命令字串將被忽略。
相反,請嘗試:
cmd /C echo hello
將此添加到您的子行程命令中,您將獲得:
cmds = (['cmd', '/C', 'echo', 'hello'])
cmd_result = subprocess.run(cmds, shell=False, check=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True )
print(cmd_result.stdout)
# prints:
hello
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/503765.html
