新的python,我发现子进程的check_output在Windows上很好地运行,但它似乎只运行Windows PATH环境变量中的cmds。任何方式来在python子进程中使用绝对路径check_output
我可以执行以下罚款:显示
import sys
from subprocess import check_output
cmd = check_output("ipconfig", shell=True)
print(cmd.decode(sys.stdout.encoding))
和ipconfig输出细。
如果我尝试运行不在路径中的特定命令并尝试绝对路径,我会收到错误。
import sys
from subprocess import check_output
cmd = check_output("c:\\test\\test.exe", shell=True)
print(cmd.decode(sys.stdout.encoding))
有没有办法使用绝对路径引用check_output?我是没有发现任何..
我甚至试图改变该目录..
import sys
from subprocess import check_output
import os
os.chdir("c:\\test\\")
cmd = check_output("test.exe", shell=True)
print(cmd.decode(sys.stdout.encoding))
,但我得到以下错误
File "C:\Python35\lib\subprocess.py", line 398, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'naviseccli.exe' returned non-zero exit status 1
Process finished with exit code 1
显然,你成功地执行'naviseccli.exe'就好了,但它以非零退出状态返回,这会导致'CalledProcessError'(这是['check_output']的预期行为(https://docs.python.org/3/library/subprocess.html#subprocess.check_output) )。 – mkrieger1
当你执行'check_output(“c:\\ test \\ test.exe”,shell = True)时,你会得到什么错误? – mkrieger1