Hallo Liste, kleine Frage zum configparser, <code> conpar = configparser.ConfigParser() conpar.read('config.ini') # Einlesen der Daten </code> muß ich die Datei "config.ini" nicht irgendwie wieder schließen? in der Doku habe ich nix dazu gefunden. Oder geschieht diese nach dem Einlesen automatisch durch den configparser? Danke für eine kurze Info Gruß Manfred -- Den allerwenigsten Menschen ist beizubringen, daß Bücher, die viele andere nicht verstehen, von ihnen gleichfalls unverstanden bleiben. -- Jean Paul
Hallo, jemand der Gil mit Nachnamen heisst & Python programmiert - da muss ich ja schon schmunzeln :)
muß ich die Datei "config.ini" nicht irgendwie wieder schließen? in der Doku habe ich nix dazu gefunden. Oder geschieht diese nach dem Einlesen automatisch durch den configparser?
Das geschieht automatisch, so etwas kannst du auch selbst im Code nachlesen: https://github.com/python/cpython/blob/master/Lib/configparser.py#L696 <https://github.com/python/cpython/blob/master/Lib/configparser.py#L696> Wie du siehst wird ein with-statement benutzt. Damit wird die Datei nur zum einmaligen einlesen geoeffnet. Diez
Hi Manfred, dies ist die Implementierungvon ConfigParser.read: <code> if isinstance(filenames, str): filenames = [filenames] read_ok = [] for filename in filenames: try: with open(filename, encoding=encoding) as fp: self._read(fp, filename) except OSError: continue read_ok.append(filename) return read_ok </code> Wie du siehst, wird dort mit einem ContextManager "with" gearbeitet und dieser schließt die Datei am Ende der Verarbeitung. Sven On 18.01.2017 18:21, Manfred Gil wrote:
Hallo Liste,
kleine Frage zum configparser,
<code> conpar = configparser.ConfigParser()
conpar.read('config.ini')
# Einlesen der Daten
</code>
muß ich die Datei "config.ini" nicht irgendwie wieder schließen? in der Doku habe ich nix dazu gefunden. Oder geschieht diese nach dem Einlesen automatisch durch den configparser?
Danke für eine kurze Info
Gruß Manfred
On Wed, 18 Jan 2017 17:21:53 +0000 (UTC) Manfred Gil <manfred-gil@t-online.de> wrote:
kleine Frage zum configparser,
<code> conpar = configparser.ConfigParser()
conpar.read('config.ini')
# Einlesen der Daten
</code>
muß ich die Datei "config.ini" nicht irgendwie wieder schließen? in der Doku habe ich nix dazu gefunden. Oder geschieht diese nach dem Einlesen automatisch durch den configparser?
Die anderen haben schon die vernünftige Antwort gegeben. Ich möchte gerne noch sagen, warum mich dir Frage überrascht hat ;-) Der code oben zeigt für mich recht eindeutig, das lediglich der Name der Datei übergeben wird. Du musst Dich selber nicht kümmern: * ob die Datei existiert und was passiert wenn nicht, * ob die Datei lesbar ist, * ob die Datei richtig formatiert ist, * ob die Datei zum lesen, schreiben, anfügen, im Textmodus oder im Binärmodus, mit CR+LF oder mit LF geöffnet und gelesen werden muss. Warum (zum Geier ;-) ) kommst du da noch auf die Idee, das Du Dich um das Schließen selber kümmern müsstest? Wäre das dann nicht eine _sehr_ schlecht designte API? Und müsste dann nicht "conpar.read(…)" das file-objekt oder den file-handle zurück geben? Erwartest Du dann nicht, das dann in der Dokumentation steht "Achja, kümmer Dich bitte selber darum das ding zu schließen"? Vielleicht gibt es APIs, die sowas tatsächlich mit Dir als ihrem Nutzer machen. Aber wenn es sich um die Standardbibliotheke handelt dürfen wir schon besseres erwarten ;-) Happy Coding, Arnold
On 18.01.2017 22:45, Arnold Krille wrote:
Vielleicht gibt es APIs, die sowas tatsächlich mit Dir als ihrem Nutzer machen. Aber wenn es sich um die Standardbibliotheke handelt dürfen wir schon besseres erwarten ;-)
Ich kann natürlich nicht für Manfred sprechen, allerdings vermute ich aufgrund seiner Vorerfahrung mit Perl? und C? (wenn ich mich recht erinnere), dass diese unmögliche Art von APIs tatsächlich existieren und man sich als kleiner Entwickler ständig über solchen Mist Gedanken machen muss. Weiterhin denke ich, dass gute Beiträge hier auf dieser Mailingliste auch das Vertrauen Manfreds in Python als leicht verständliche Programmiersprache bestätigen und ausbauen können, wenn er sich schon als "gebrandmarktes Kind" diese Art von Gedankengängen angeeignet hat. In dem Sinne, wünsche ich auch
Happy Coding,
Sven
participants (4)
-
Arnold Krille
-
Diez B. Roggisch
-
Manfred Gil
-
Sven R. Kunze