burim:python:python-labs:loesung_dateien_einlesen_kommentiert.py
"""Einlesen und Schreiben von Dateien - Adapterinformationen und MAC-Adressen"""
FNAME = "ifconfig.txt"  # Name der einzulesenden Datei

ADAPTERS = dict()  # leeres Dictionary zum Speichern der Adapterinformation
# im Context wird die Datei im Lesemodus geoeffnet
with open(FNAME, "r") as fid:  # fid als TextIO-Objekt
    for linenumber, line in enumerate(fid):
        # fuer jede Zeile ueberpruefe, ob ...
        if line[0] is not " ":    # es sich beim ersten Zeichen um kein
                                  # Leerzeichen handelt
            infos = line.split()  # und mache die einzelnen Woerter zur Liste
            if(infos and          # wenn die Liste nicht leer ist und
               "lo" not in infos[0] and  # das es sich nicht um ein Loopback-
               "tun" not in infos[0]):   # oder Tunnelinterface handelt,
                adapter, mac = infos[0], infos[4]  # schreibe den Adapternamen
                print(linenumber, adapter, mac)    # und die MAC-Adresse in das
                ADAPTERS[adapter] = mac  # Dictionary.

# Bestimme den Dateinamen fuer die Ausgabe bzw. fuer die geaenderten
# MAC-Adressen:
FNAME_OUT = FNAME[:FNAME.rfind(".txt")] + "_adapters.txt"
FNAME_OUT2 = FNAME[:FNAME.rfind(".txt")] + "_adapters_changed.txt"

with open(FNAME_OUT, "w") as fid:
    for adapter, mac in ADAPTERS.items():
        # Schreibe die Adapternamen und MAC-Adressen in eine Datei:
        fid.write("Adapter: " +  adapter + ", MAC: " + mac + "\n")

BASEMAC = "01:23:45:ff:00:"
with open(FNAME_OUT2, "w") as fid:
    for i, (adapter, mac) in enumerate(ADAPTERS.items()):
        # Bestimmte die geaenderten MAC-Adressen
        mac_changed = BASEMAC + "%02x" %(i+1)
        mac_changed = BASEMAC + "{0:02x}".format((i+1))
        # und schreibe diese in eine Datei:
        fid.write("Adapter: " +  adapter + ", MAC: " + mac_changed + "\n")
burim/python/python-labs/loesung_dateien_einlesen_kommentiert.py.txt · Last modified: 2019/01/21 20:55 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki