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
