Ich versuche Daten aus einer semikolon separierten .csv an die Stelle der Platzhalter in einer .txt zu schreiben. Solange ich in meiner .csv nur einen Splatenkopf habe funktioniert das Skript. Sobald ich aber in Spalte B (hier "vlan") einen weiteren Wert hinzufüge bricht das Skript mit folgenden Fehler ab:
Code: Alles auswählen
PS C:\Program Files\WPy64-31110\scripts> python test.py
Traceback (most recent call last):
File "C:\Program Files\WPy64-31110\scripts\test.py", line 27, in <module>
generate_router_config(csv_data, router_template_file, router_config_output_file)
File "C:\Program Files\WPy64-31110\scripts\test.py", line 18, in generate_router_config
config_entry = config_template.format(**entry)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'routername'
Hier mein skript:
Code: Alles auswählen
import csv
def read_csv_data(file_path):
data = []
with open(file_path, 'r') as csv_file:
csv_reader = csv.DictReader(csv_file, delimiter=';')
for row in csv_reader:
data.append(row)
return data
def generate_router_config(csv_data, template_file, output_file):
with open(template_file, 'r') as template:
config_template = template.read()
with open(output_file, 'w') as output:
for entry in csv_data:
print(entry) # Ausgabe der entry-Daten zur Überprüfung
config_entry = config_template.format(**entry)
output.write(config_entry)
if __name__ == "__main__":
csv_file_path = r"C:\Program Files\WPy64-31110\scripts\test.csv"
csv_data = read_csv_data(csv_file_path)
router_template_file = r"C:\Program Files\WPy64-31110\scripts\test_vorlage.txt"
router_config_output_file = "router_konfiguration.txt"
csv_data = read_csv_data(csv_file_path)
generate_router_config(csv_data, router_template_file, router_config_output_file)
Inhalt der .csv:
Code: Alles auswählen
routername;vlan
testname;1
Code: Alles auswählen
{routername}
{vlan}
Hat jemand einen Tip für mich?
Vielen Dank im Vorraus!