Seite 1 von 1

Problem "escaping" /configparser

Verfasst: Dienstag 23. September 2025, 10:41
von drnicolas
Mein Problem:
Es muss ein Windows-kompatibler Netzwerkpfad zusammengebaut werden. Dieser wird dann in eine Oracle-DB geschrieben.

Der Pfad selber wird über configparser gelesen und in eine Variable gespeichert.

INI-Datei:
workdirectory = \\meinserver\docs

Es kommt leider momentan zu einer Verdoppelung der Backslashs und ich verstehe nicht warum

Die Variable ist als String deklariert.

Ich hatte schon probiert den Pfad in Anführungszeichen zu setzen. Dann erscheinen die Anführungszeichen aber in meinerm Netzwerkpfad.

Mache ich da was falsch?
ich muss einfach sicherstellen, dass ein originaler Pfad geneiert wird

Re: Problem "escaping" /configparser

Verfasst: Dienstag 23. September 2025, 11:10
von __blackjack__
@drnicolas: Kann ich nicht nachvollziehen. INI-Datei:

Code: Alles auswählen

[section]
workdirectory = \\meinserver\docs
Einlesen:

Code: Alles auswählen

In [255]: cp = configparser.ConfigParser()

In [256]: cp.read_file(open("test.ini"))

In [257]: cp.get("section", "workdirectory")
Out[257]: '\\\\meinserver\\docs'

In [258]: print(cp.get("section", "workdirectory"))
\\meinserver\docs

Re: Problem "escaping" /configparser

Verfasst: Dienstag 23. September 2025, 14:26
von DeaD_EyE
Ich vermute mal, dass du die Repräsentation meinst.
Bei der Repräsentation werden Strings mit Escape-Sequenzen dargestellt.

Wenn man den String mittels print in der Konsole ausgibt, werden die Escape-Sequenzen nicht im Klartext dargestellt. Die Sequenz \n fängt z.B. eine neue Zeile an. \r ist der Wagenrücklauf der Schreibmaschine, dass noch unter Windows verwendet wird. Naja, für HTTP und serielle Protokolle auch.

Sobald man mit dem umgekehrten Schrägstrich einen String erstellt, muss man genau aufpassen.
Das entfällt aber komplett, wenn man einfach mittels ConfigParser die ini-Datei einliest.

Drei Backslashes ergeben zwei Backslashes.

cfg["section"]["workdirectory"]
'\\\\meinserver\\docs'
print(cfg["section"]["workdirectory"])
\\meinserver\docs

Re: Problem "escaping" /configparser

Verfasst: Donnerstag 25. September 2025, 06:54
von drnicolas
Vielen Dank. Das habe ich abgeändert.
Nach einem ersten test scheint es zu funktionieren

Re: Problem "escaping" /configparser

Verfasst: Dienstag 21. Oktober 2025, 16:18
von avivadee
Hallo! Das Verhalten liegt daran, wie Python mit Backslashes in Strings umgeht. Beim Einlesen mit configparser sollte der Wert tatsächlich so übernommen werden, wie er in der INI steht („workdirectory = \\meinserver\docs“). Wenn du den String aber z.B. mit print anzeigst, werden doppelte Backslashes oft im Debugging angezeigt, tatsächlich handelt es sich aber nur um einen einfachen Backslash im Wert. Am besten prüfst du das mit len(pfad) oder indem du den Wert direkt in eine Datei schreibst.

Re: Problem "escaping" /configparser

Verfasst: Mittwoch 22. Oktober 2025, 09:53
von drnicolas
Okay, danke.
Das scheint jetzt so hinzukommen