簡體   English   中英

從子過程中提取Python字符串

[英]Python string extraction from Subprocess

嗨,我目前正在編碼一個隨機程序,實際上需要查看我的MAC地址。

這是我目前所擁有的:

import subprocess

def get_mac():

    mac_addr = subprocess.check_output(["ifconfig", "wlan0"])

我要從中提取HWaddr的輸出:

ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 00:1b:11:1e:97:29  
          inet addr:10.1.1.6  Bcast:10.1.1.255  Mask:255.255.255.0                                                                                                                  
          inet6 addr: fe80::21b:11ff:fe1e:9729/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:91394 errors:0 dropped:0 overruns:0 frame:0
          TX packets:58894 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:115550581 (115.5 MB)  TX bytes:6097577 (6.0 MB)

所以現在我有了MAC的下落,但是我將如何以這種精確格式提取它呢? 我環顧四周,除URL提取之類的方法外,其他都無法解決。

我所能找到的只是re.search hich根本對我沒有幫助,因為我每次都需要尋找不同的MAC。 謝謝

編輯:

抱歉,現在是5:30,我有點累。 我意識到我什至沒有完成我的問題對不起。 甚至沒有代碼:/現在編輯

如果您使用的是Linux,則可以嘗試以下操作以獲取MAC地址:

iface = 'wlan0'
mac_addr = open('/sys/class/net/%s/address' % iface).read().rstrip()

對於一般的字符串提取,可以使用re模塊:

import subprocess, re

RE_MAC = re.compile(r'\bHWaddr\s+(((?(2):|)[\dA-Fa-f]{2}){6})\b')
match = RE_MAC.search(subprocess.check_output(["ifconfig", "wlan0"]))
if match:
    mac_addr = match.group(1)

請注意,我的ifconfig版本(net-tools 1.60)使用ether而不是HWaddr ,這說明了解析此類程序輸出的一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM