【问题标题】:os.system command in python reading improper for wifi namepython中的os.system命令读取不正确的wifi名称
【发布时间】:2017-05-31 15:20:21
【问题描述】:

不是 100% 给这篇文章起什么标题。这是一个非常简单的问题

首先我跑了:

os.system("netsh interface show interface")

发现我的 wifi 被称为“Wi-fi 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")

当我调用禁用时,虽然它给了我这个错误:

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

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

我是不是没有以某种方式正确地处理这个字符串?不知道为什么会发生这种情况,我宁愿不必重命名 Wifi,因为那只是一个糟糕的解决方法,而不是理解问题并修复它。

谢谢

【问题讨论】:

  • 很可能(因为适配器名称包含空格),您需要 dblquote 它。在您的代码中,它应该是:os.system("netsh interface set interface \"Wi-Fi 2\" enabled"),或者(即使我不是这种形式的忠实粉丝):os.system('netsh interface set interface "Wi-Fi 2" enabled')。如果是这种情况,请修改所有位置。
  • 想要将此作为答案以便我接受吗?成功了,非常感谢。

标签: python string os.system


【解决方案1】:

Win cmd shell(虽然这不限于Win),SPACE (ASCII 0x20(32)) 是一个分隔符(或:其中之一),意思是当解析一个字符序列时遇到一个SPACE ,之前的将被视为一个令牌,而之后的将被视为另一个令牌(依此类推)。

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

这适用于:

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

这是从 OS 的角度来看需要做的事情,我们仍然需要处理 Python 字符串(包装了所有这些)。它可以通过两种方式完成,如下所述:[Python]: String literals:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2012-06-14
    相关资源
    最近更新 更多