Ich habe einen Python-Logger eingerichtet, der das Protokollierungsmodul von Python verwendet. Ich möchte die Zeichenfolge, die ich verwende, mit dem Logging Formatter-Objekt in einer Konfigurationsdatei unter Verwendung des ConfigParser-Moduls speichern.
Die Formatzeichenfolge wird in einem Verzeichnis von Einstellungen in einer separaten Datei gespeichert, die das Lesen und Schreiben der Konfigurationsdatei übernimmt. Das Problem, das ich habe, ist, dass Python immer noch versucht, die Datei zu formatieren und umkippt, wenn es alle Formatierungsflags für das Protokollierungsmodul liest.
%Vor%Meine Frage ist einfach: Wie kann ich die Formatierungsfunktion hier deaktivieren, während ich sie woanders belasse? Meine erste Reaktion war die ausgiebige Verwendung des Backslashs, um den verschiedenen Prozentzeichen zu entkommen, aber das bricht natürlich die Formatierung so stark, dass es nicht funktioniert, selbst wenn ich es brauche.
Ich sollte auch erwähnen, dass, da es in den Kommentaren aufgekauft wurde, der ConfigParser eine interne Interpolation durchführt, die den Trip-up verursacht. Hier ist meine Rückverfolgung:
%Vor%Auch allgemeine Hinweise auf gute Einstellungen - Dateipraktiken wären nett. Dies ist das erste Mal, dass ich etwas Wichtiges mit ConfigParser gemacht habe (oder logging).
Vielen Dank im Voraus, Dominik
Sie möchten ConfigParser.RawConfigParser
anstelle von ConfigParser.ConfigParser
verwenden. Nur letzteres führt eine magische Interpolation der Konfigurationswerte durch.
BEARBEITEN:
Mit ConfigParser.SafeConfigParser
können Sie Formatzeichenfolgen mit einem zusätzlichen %
Prozentzeichen umgehen. Dieses Beispiel sollte dann funktionieren:
Es gibt RawConfigParser
, was wie ConfigParser
ohne Interpolationsverhalten ist. Wenn Sie die Interpolationsfunktion in keinem anderen Teil der Konfigurationsdatei verwenden, können Sie einfach ConfigParser
durch RawConfigParser
in Ihrem Code ersetzen.
Weitere Informationen finden Sie in der Dokumentation von RawConfigParser .
Sie können auch die Interpolation verwenden, die auf None
eingestellt ist.
(Ich benutze Python 3.6.0
)
Was ist das Problem mit dem obigen Code? Die Interpolation wird nur ausgeführt, wenn der Operator %
auf die Zeichenfolge angewendet wird. Wenn Sie %
nicht verwenden, können Sie die Formatierungszeichenfolge wie jede andere Zeichenfolge verwenden.
Welche Version von Python verwenden Sie? Ein Upgrade auf 2.6.4 kann helfen, siehe
Tags und Links python string-interpolation