Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5288
| From | Stefan Schwarzer <sschwarzer@sschwarzer.net> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] einheitliches Vorgehen beim Öffnen von Dateien. |
| Date | 2018-10-18 12:00 +0200 |
| Message-ID | <mailman.232.1539856849.2799.python-de@python.org> (permalink) |
| References | <90674f1b-f3c2-04c2-f50c-f306c5ea1a88@thomas-guettler.de> <13eb3966-f92c-9bdf-db4a-072c34fdc1f4@sschwarzer.net> |
On 18/10/2018 09.59, Thomas Güttler wrote: > So lange wir Python2 unterstützen soll io.open() verwendet werden. Ich finde Peters Vorschlag mit from io import open sympathisch, weil man dann später bei ausschließlicher Python-3-Unterstützung nur das Import-Statement löschen muss, aber sonst keinen Code ändern muss. > Wenn man nur den Inhalt braucht, dann ist diese einfache Variante zulässig (ohne with-Statement) > > content = io.open(my_file, 'rt').read() > > Auch beim Schreiben? Ich schließe mich hier den anderen nachdrücklich an: Die Datei sollte immer ordentlich geschlossen werden, egal ob beim Lesen oder Schreiben. Beim Lesen wäre das explizite Schließen vielleicht nicht ganz so wichtig, was Datenverluste angeht. Aber ich halte es trotzdem für guten Stil, explizit "hinter sich aufzuräumen". Die Verwendung eines `with`-Blocks hat auch den Vorteil, dass der Leser danach weiß, dass dieses Dateiobjekt nicht mehr für I/O verwendet wird. (Ich schätze, theoretisch kann man dann immer noch auf `.name` zugreifen, würde das aber für schlechten Stil halten.) > Die Variable wird „f“ genannt: > > with io.open(my_file, 'wt') as f: > f.write(...) Ich verwende meist `fobj`. Wenn man den Bezeichner abseits vom `with`-Block sieht, ist damit klar, dass `f` kein Dateiname ist, sondern ein Dateiobjekt. Leider werden `f` und `file` mitunter sowohl für Dateinamen (manchmal auch Pfade) als auch für Dateiobjekte verwendet. Apropos: Dateinamen bzw. -pfade benenne ich zur Abgrenzung von Dateiobjekten mit `..._name` bzw. `..._path`. > So wird das meist in der Python-Doku gemacht: Bsp: Methods of File Objects Ich glaube, mit Bezeichnern (und anderen Konventionen) in der Python-Doku und Tutorials sollte man immer vorsichtig sein. Da geht es ja normalerweise darum, "mal eben" etwas zu zeigen. Das heißt aber nicht, dass man dieselben Muster für Produktions-Code verwenden sollte. > Der with-Block nach dem Open sollte kurz sein. Also nicht länger etwa 6 Zeilen. Lieber ein langer `with`-Block als keine sauber geschlossenen Dateien. ;-) Aber ja, lange Blöcke machen den Code leicht unübersichtlich, vor allem wenn sie verschachtelt sind. Im Zweifelsfall fände ich aber einen längeren `with`-Block besser als den Code besonders kompakt zu schreiben, nur um unter dem Zeilen-Limit zu bleiben. Viele Grüße Stefan
Back to de.comp.lang.python | Previous | Next — Next in thread | Find similar
Re: [Python-de] einheitliches Vorgehen beim Öffnen von Dateien. Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2018-10-18 12:00 +0200 Re: [Python-de] einheitliches Vorgehen beim Öffnen von Dateien. Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2018-10-19 18:41 +0200
csiph-web