קורס Advanced Python3 שיעור פענוח קלט מתוכנית ifconfig


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/advanced-python3/lessons/parsing-ifconfig

שלום ינון,
רציתי לשאול מה עושה הפונקציה re.compile?
תודה מראש.

הי אדם,

בעבודה עם ביטוי רגולארי המחשב לוקח את הביטוי עצמו (שהוא טקסט), הופך אותו לאוביקט בזיכרון שאיתו הוא יכול לבדוק מחרוזות (תהליך שנקרא compilation) ואז משתמש באוביקט הזה בזיכרון כדי לבדוק טקסטים. פייתון מאפשרת לבצע את שני השלבים האלה ״במכה אחת״ או בנפרד.

הפקודה הבאה מבצעת קומפילציה של ביטוי רגולרי וגם בודקת אם מחרוזת מתאימה לביטוי:

import re
re.search('l+', 'hello')

דרך אחרת היא לשבור את הפעולה ל-2 כמו שממחישה התוכנית הבאה, שעושה בדיוק את אותו דבר רק נותנת לך ״נקודת התערבות״ אחרי הקומפילציה של הביטוי:

import re
scanner = re.compile('l+')
scanner.search('hello')

עכשיו לשאלה שלך-

הפונקציה re.compile מחזירה את אוביקט הביטוי הרגולרי, מה שקראתי כאן scanner איתו אפשר לבדוק מחרוזות. שמירת אוביקט זה במשתנה נפרד נותנת שני יתרונות:

  1. שיפור ביצועים כשאתה מחפש את אותו ביטוי רגולרי בכמה מחרוזות (כי מבצעים את הקומפילציה רק פעם אחת).

  2. סדר בקוד ואפשרות להפריד בין ״קוד הביטוי הרגולרי״ לבין הקוד שמשתמש בו כדי לזהות תבניות במחרוזות.

יש אופציה לעשות דבר דומה גם על ווינדוס

הי,
ב Windows המצב קצת שונה כי התוכנית ifconfig לא קיימת. במקומה יש תוכנית בשם ipconfig. אני חושב שזה יכול להיות תרגיל טוב לנסות ליישם את אותו קוד על Windows.

בתור התחלה תפעיל ipconfig משורת הפקודה כדי לראות את מבנה הפלט שלו.

לאחר מכן תהפוך כל אחת מהשורות שמעניינות אותך לביטוי רגולארי (בדיוק כמו שהראיתי בוידאו), וכך תוכל למשוך מתוך הפלט את הקטעים שמעניינים אותך.

אם אתה מסתבך מוזמן לפרסם פה את מה שכתבת ואנסה לעזור

בהצלחה

ליתר דיוק מדובר בIPCONFIG /ALL

    Windows IP Configuration

   Host Name . . . . . . . . . . . . : DESKTOP-VTLVT3V
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : Home

Ethernet adapter Ethernet:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Broadcom NetLink (TM) Gigabit Ethernet
   Physical Address. . . . . . . . . : 00-25-B3-72-9D-EC
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes

Wireless LAN adapter Wi-Fi:

   Connection-specific DNS Suffix  . : Home
   Description . . . . . . . . . . . : Intel(R) WiFi Link 5100 AGN
   Physical Address. . . . . . . . . : 00-21-6B-1A-AD-BA
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::8099:f61:d2aa:5aab%3(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.0.0.13(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : יום ראשון 12 אפריל 2020 13:17:30
   Lease Expires . . . . . . . . . . : יום ראשון 12 אפריל 2020 17:07:44
   Default Gateway . . . . . . . . . : 10.0.0.138
   DHCP Server . . . . . . . . . . . : 10.0.0.138
   DHCPv6 IAID . . . . . . . . . . . : 50340203
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-0C-36-28-00-25-B3-72-9D-EC
   DNS Servers . . . . . . . . . . . : 10.0.0.138
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter Bluetooth Network Connection:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Bluetooth Device (Personal Area Network)
   Physical Address. . . . . . . . . : 00-24-7E-9F-F4-D6
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes

Tunnel adapter isatap.Home:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : Home
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

Tunnel adapter Teredo Tunneling Pseudo-Interface:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft Teredo Tunneling Adapter
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv6 Address. . . . . . . . . . . : 2001:0:2851:782c:46b:119:2a68:d1de(Preferred)
   Link-local IPv6 Address . . . . . : fe80::46b:119:2a68:d1de%8(Preferred)
   Default Gateway . . . . . . . . . : ::
   DHCPv6 IAID . . . . . . . . . . . : 268435456
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-26-0C-36-28-00-25-B3-72-9D-EC
   NetBIOS over Tcpip. . . . . . . . : Disabled

מדויק נראה תרגיל טוב. רוצה להתחיל ואני אעזור אם תיתקע?