Ist es möglich, Pythons Stringinterpolation vorübergehend zu deaktivieren?

7

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

    
dangerouslyfacetious 29.03.2010, 12:49
quelle

6 Antworten

10

Haben Sie versucht, Prozente mit %% zu umgehen?

    
wRAR 29.03.2010, 12:55
quelle
9

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:

%Vor%     
Haes 29.03.2010 13:21
quelle
5

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 .

    
Tamás 29.03.2010 13:21
quelle
2

Sie können auch die Interpolation verwenden, die auf None eingestellt ist.

%Vor%

(Ich benutze Python 3.6.0 )

    
Bharati Desai 01.03.2017 23:39
quelle
1

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.

    
Fabian Jakobs 29.03.2010 13:02
quelle
1

Welche Version von Python verwenden Sie? Ein Upgrade auf 2.6.4 kann helfen, siehe

Ссылка

    
Peter Otten 29.03.2010 14:16
quelle

Tags und Links