Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误和缺少的方法_Python_Python 2.7 - Fatal编程技术网

Python 属性错误和缺少的方法

Python 属性错误和缺少的方法,python,python-2.7,Python,Python 2.7,我是python编程语言的新手,在做一些(显然不是)相当简单的事情时遇到了一个问题。代码如下: # Get the list of available network interfaces listNIC = os.system("ifconfig -s | awk '{print $1}'") listNIC.split('\r?\n') # Get the name of the wireless network card with iwconfig wlanNIC = '' i = 0

我是python编程语言的新手,在做一些(显然不是)相当简单的事情时遇到了一个问题。代码如下:

# Get the list of available network interfaces
listNIC = os.system("ifconfig -s | awk '{print $1}'")
listNIC.split('\r?\n')

# Get the name of the wireless network card with iwconfig
wlanNIC = ''
i = 0
while i < len(listNIC) :
    if listNIC[i].match('eth[0-9]{1}') :
        wlanNIC = listNIC[i]
        break
    i += 1
进入

但现在我遇到了一个更奇怪的问题。我得到一个错误,表示字符串没有属性匹配。以下是错误:

Traceback (most recent call last):
  File "Kol.py", line 15, in <module>
    if listNIC[i].match('eth[0-9]{1}') :
AttributeError: 'str' object has no attribute 'match'
回溯(最近一次呼叫最后一次):
文件“Kol.py”,第15行,在
如果listNIC[i].match('eth[0-9]{1}'):
AttributeError:“str”对象没有属性“match”
因此,我的问题如下:

  • 如何解决属性错误及其来源

提前谢谢

os.system
返回命令的退出代码,而不是其输出。您可以将此数字转换为字符串,但这不会执行您希望它执行的操作。它也被弃用。您可能需要查看
子流程
模块

output = subprocess.check_output('command', shell=True)
此外,您需要使用模块
re
进行匹配。查看文档中的精确语法,但是它应该看起来像
re.match(你的模式,你的字符串)

最后,虽然您的版本没有错,但更常见的情况是循环浏览下面示例中的列表。在保存变量和调用
len
时,它会稍微短一些,可读性也更高。它也被认为更像蟒蛇

for nic in listNIC:
    if re.match(pattern, nic):
        wlanNIC = nic
        break

os.system
返回命令的退出代码,而不是其输出。您可以将此数字转换为字符串,但这不会执行您希望它执行的操作。它也被弃用。您可能需要查看
子流程
模块

output = subprocess.check_output('command', shell=True)
此外,您需要使用模块
re
进行匹配。查看文档中的精确语法,但是它应该看起来像
re.match(你的模式,你的字符串)

最后,虽然您的版本没有错,但更常见的情况是循环浏览下面示例中的列表。在保存变量和调用
len
时,它会稍微短一些,可读性也更高。它也被认为更像蟒蛇

for nic in listNIC:
    if re.match(pattern, nic):
        wlanNIC = nic
        break

您是否尝试打印
os.system(“ifconfig-s | awk'{print$1}')的结果
?我猜这会返回一个整数(退出值),而不是命令的输出。是什么让你认为一个字符串应该有一个属性
匹配
?这是正则表达式对象的属性,而不是字符串。是否尝试打印
os.system(“ifconfig-s | awk'{print$1}')
的结果?我猜这会返回一个整数(退出值),而不是命令的输出。是什么让你认为一个字符串应该有一个属性
匹配
?这是正则表达式对象的属性,不是字符串。哦,好吧,我误解了这个方法的含义。谢谢你的快速回答。非常感谢你的精确性!来自JavaScript/Node.js,我倾向于将其语法应用于python,这会产生糟糕的代码……哦,好吧,我误解了该方法的含义。谢谢你的快速回答。非常感谢你的精确性!来自JavaScript/Node.js,我倾向于将其语法应用于python,这会产生糟糕的代码。。。
for nic in listNIC:
    if re.match(pattern, nic):
        wlanNIC = nic
        break