从python执行DevCon CMD命令
问题描述:
我想用DevCon从python脚本重新启动驱动程序。它的命令行工作用这个命令:从python执行DevCon CMD命令
devcon restart \"sd0007322081041363_kcanv\"
我尝试这样做:
os.system("devcon restart \"sd0007322081041363_kcanv\"")
与结果:
'devcon' is not recognized as an internal or external command
,我读了使用os.system已过时,我需要使用subprocess.check_output所以我试试这个:
subprocess.check_output(['devcon', 'restart', '"sd0007322081041363_kcanv"'])
与结果:
WindowsError:[Error 2] The system cannot find the file specified
这:
subprocess.check_output('devcon restart "sd0007322081041363_kcanv"', shell=True)
与结果:
subprocess.CalledProcessError: Command 'devcon restart "sd0007322081041363_kcanv"' returned non-zero exit status 1
这:
subprocess.Popen("devcon restart \"sd0007322081041363_kcanv\"", shell=True, stdout=subprocess.PIPE).stdout.read()
结果:
'devcon' is not recognized as an internal or external command
这:
try:
subprocess.check_output('devcon disable "sd0007322081041363_kcanv" /f',shell=True,stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as e:
raise RuntimeError("command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
与结果:
RuntimeError: command 'devcon disable "sd0007322081041363_kcanv" /f' return with errpr (cpde 1): 'devcon' is not recognized as an internal or external command, operable program or batch file
Devcon.exe的是在Windows/System32下,它是在系统路径设置。
我知道这可能是重复的问题,但我已经尝试了很多解决方案在stackoverflow但我不能解决这个问题。
答
最后,我想出了一个解决方案。我试过很多东西,但这个对我来说是什么工作原理:由C
副本Devcon.exe的:\ Windows \ System32下,并把它放到C:\ WINDOWS \ SysWOW64中。
-
我的代码:
try: subprocess.check_output('C:\\Windows\\SysWOW64\\devcon.exe restart "sd0007322081041363_kcanv" /f',shell=True,stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: raise RuntimeError("command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
尝试指定的完整路径和DEVCON的扩展名为.exe。 – lit
@lit我试过 'subprocess.Popen(“C:\\ Windows \\ System32 \\ devcon.exe restart”sd0007322081041363_kcanv \“”,shell = True,stdout = subprocess.PIPE).stdout.read ()'但结果几乎相同。结果:''C:\ Windows \ System32 \ devcon.exe'不被识别为内部或外部命令 – Budlog