Python 属性错误和缺少的方法
我是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
# 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