os.system python 中的命令读取不正确的 wifi 名称

os.system command in python reading improper for wifi name

不是 100% 的标题post。这是一个非常简单的问题

首先我运行:

os.system("netsh interface show interface")

发现我的 wifi 被调用了 "Wi-fi 2"

然后我想做 2 个简单的功能来打开和关闭它

import os 

def enable():
    os.system("netsh interface set interface 'Wi-Fi 2' enabled")
def disable():
    os.system("netsh interface set interface 'Wi-Fi 2' disabled")

也尝试过其他一些方法,比如

interface "+"Wi-Fi 2"+" disabled")

当我调用 disable 时它给我这个错误:

2 is not an acceptable value for admin.
The parameter is incorrect.

它正在将 2 作为一个单独的参数读取(已通过尝试 Wi-Fi 3 确认,它说 3 不是可接受的值)。

我是不是没有正确地处理这个字符串?不知道为什么会这样,我宁愿不必重命名 Wifi,因为那只是一个糟糕的解决方法,而不是了解问题并解决它。

谢谢

Wincmd中shell(虽然这不限于Win),SPACE (ASCII 0x20(32)) 是一个separator (or: one of them),意思是当解析一个字符序列时遇到SPACE,前面的会被当做一个令牌,而其后的内容将被视为另一个令牌(依此类推)。

reverse(如果你愿意)是 dblquote"ASCII 0x22(34)): 包含在两个这样的字符之间的内容将被视为一个标记,无论是否它包含 SPACEs.

这适用于:

  • 文件路径(这就是为什么 dir c:\Program Files 失败,而 dir "c:\Program Files" 有效 - 应该使用后者)
  • 命令参数(此处相同)

OS的角度来看,这是需要做的,我们还需要处理Python 字符串(包装了所有这些)。可以按照此处说明的 2 种方式完成:[Python]: String literals:

  • 通过 bkslash 转义 "\ASCII 0x5C(92)),因为字符串也包含在 dblquotes 中: os.system("netsh interface set interface \"Wi-Fi 2\" enabled")
  • 使用 单引号'ASCII 0x27(39)) 将字符串括起来:os.system('netsh interface set interface "Wi-Fi 2" enabled')