You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从配置文件读取os.system参数执行USB设备重启命令时出现语法错误的技术咨询

解决USB设备重置命令从配置文件读取后执行失败的问题

你遇到的问题主要是配置文件格式错误,加上configparser的解析特性导致命令字符串被破坏了,咱们一步步拆解解决:

问题根源

  1. 配置文件误用Python语法:你在config.txt里写了r'"devcon.exe restart "*USB\VID_04E8&PID_3321*"',其中r''是Python专属的原始字符串语法,配置文件根本不识别这个前缀,会被当成字符串的一部分读进去,直接打乱了命令格式。
  2. 转义字符被错误解析:configparser默认会处理转义字符,配置文件里的\VID会被尝试解析为转义序列(哪怕\V不是有效转义,也会干扰设备ID的正确性)。
  3. 潜在的变量名拼写错误:你的代码里写了usbddev = config.get(...),但重置函数里用的是usbdev——如果这不是笔误,会直接触发NameError,虽然你的错误提示没提到这个,但还是要留意。

解决方案

步骤1:修正配置文件内容

去掉Python的r前缀,同时正确处理反斜杠(用双反斜杠避免转义):

[My Section]
usbdev = devcon.exe restart "*USB\\VID_04E8&PID_3321*"

如果devcon.exe的路径包含空格(比如在C:\Program Files目录下),需要给路径部分单独加引号:

[My Section]
usbdev = "\"C:\\Program Files\\your-path\\devcon.exe\" restart \"*USB\\VID_04E8&PID_3321*\""

步骤2:调整Python读取逻辑

确保变量名拼写正确,也可以通过raw=True让configparser直接读取原始字符串(不处理转义):

import configparser
import os

config = configparser.ConfigParser()
config.read('config.txt')
# 修正变量名拼写,添加raw=True保留原始字符
usbdev = config.get('My Section', 'usbdev', raw=True)

def resetactivity():
    os.system(usbdev)

步骤3:验证命令有效性

先打印读取到的usbdev字符串,确认和你原来硬编码的命令一致:

print(usbdev)
# 预期输出:devcon.exe restart "*USB\VID_04E8&PID_3321*"

如果输出正确,再执行重置函数就不会报错了。


内容的提问来源于stack exchange,提问作者Lukas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 13:18:17