使用Python执行DevCon CMD命令

4
我希望您能够从Python脚本中使用DevCon重新启动驱动程序。这个命令可以在命令行中工作:
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上的许多解决方案,但我无法解决此问题。


尝试指定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
1个回答

2
最后,我想到了一个解决方案。我尝试了很多方法,但这个方法对我有效:
  1. copy devcon.exe from C:\Windows\System32 and put it to C:\Windows\SysWOW64.

  2. my code:

    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))
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接