Re: [Python-de] strings zusammensetzen.

Am 30.08.2017 um 07:48 schrieb Stefan Behnel:
Übrigens, da es gerade um Geschwindigkeit ging - ich wette, mit
os.system("rm "+dateiname)
kannst du die Datei deutlich schneller löschen als mit
os.system("rm {}".format(dateiname))
oder gar mit
os.unlink(dateiname)
Die zeitlichen Unterschiede dürften meist gering sein.
Hermann der wegen des Lernaufwandes und Manual Suchens lieber os.system("rm "+dateiname) als os.unlink(dateiname) verwendet.

Hermann Riemann nospam.ng@hermann-riemann.de writes:
Hermann der wegen des Lernaufwandes und Manual Suchens lieber os.system("rm "+dateiname) als os.unlink(dateiname) verwendet.
... bis ihm mal Dateinamen wie "-rf" und "Mail von Spatzi.eml" unterkommen und er sich dann wundert, wo alle Mails geblieben sind.
Ole

Am 30.08.2017 um 08:23 schrieb Оlе Ѕtrеісhеr:
der wegen des Lernaufwandes und Manual Suchens lieber os.system("rm "+dateiname) als os.unlink(dateiname) verwendet.
... bis ihm mal Dateinamen wie "-rf" und "Mail von Spatzi.eml" unterkommen und er sich dann wundert, wo alle Mails geblieben sind.
Eher beliebt ist "rm * ~" statt "rm *~"
Hermann der so etwas teilweise durch ein eigenes Programm umgangen hat. ( emacs ist zwar momentan bei Python bockig; daher ist er auf kate (ohne ~) ausgewichen.)

Hermann Riemann nospam.ng@hermann-riemann.de wrote:
Am 30.08.2017 um 07:48 schrieb Stefan Behnel:
Übrigens, da es gerade um Geschwindigkeit ging - ich wette, mit
os.system("rm "+dateiname)
kannst du die Datei deutlich schneller löschen als mit
os.system("rm {}".format(dateiname))
oder gar mit
os.unlink(dateiname)
Die zeitlichen Unterschiede dürften meist gering sein.
Hermann der wegen des Lernaufwandes und Manual Suchens lieber os.system("rm "+dateiname) als os.unlink(dateiname) verwendet.
os.unlink() dürfte aber portabler sein und auch mit Leerzeichen und anderen speziellen Zeichen in dateiname zurechtkommen. Wer weiss, was die Shell so treibt.

Am 30.08.2017 um 10:30 schrieb Peter Heitzer:
der wegen des Lernaufwandes und Manual Suchens lieber os.system("rm "+dateiname) als os.unlink(dateiname) verwendet.
os.unlink() dürfte aber portabler sein und auch mit Leerzeichen und anderen speziellen Zeichen in dateiname zurechtkommen. Wer weiss, was die Shell so treibt.
Bei Risisko halt: os.system('rm "'+dateiname+'"')
Hermann der bei der Erstellung von *.html Dateiinhalte ohnehin da aufpassen muß.

Am 30.08.2017 um 20:03 schrieb Hermann Riemann:
Bei Risisko halt: os.system('rm "'+dateiname+'"')
Wozu? Das bringt Dir lediglich einen zusätzlichen fork mit einem execve in die Shell, die dann rm ausführt (WIMRE ein weiterer fork).
Die genannte Alternative "kostet" Dich lediglich einen Syscall und damit einen Bruchteil von os.system().
Thomas

Am 30.08.2017 um 20:21 schrieb Thomas Orgelmacher:
Bei Risiko halt: os.system('rm "'+dateiname+'"')
Wozu? Das bringt Dir lediglich einen zusätzlichen fork mit einem execve in die Shell, die dann rm ausführt (WIMRE ein weiterer fork).
Die genannte Alternative "kostet" Dich lediglich einen Syscall und damit einen Bruchteil von os.system().
Wenn ich die Zeit vom Nachschlagen im Python3 Buch mit einrechne, sieht es anders aus.
Hermann der auch über den Umweg codecs.open und io.open mit Ausnahme von cgi wieder zu open zurückgekehrt ist.

Am 31.08.2017 um 14:31 schrieb Hermann Riemann:
[...]
Wenn ich die Zeit vom Nachschlagen im Python3 Buch mit einrechne, sieht es anders aus.
Oh, ok. Dann bastel mal weiter.
Hermann, ich habe noch bei niemandem eine derartig ausgeprägte "Best-Practices" Allergie gesehen, wie bei dir.
Thomas

Hermann Riemann wrote:
Am 30.08.2017 um 10:30 schrieb Peter Heitzer:
der wegen des Lernaufwandes und Manual Suchens lieber os.system("rm "+dateiname) als os.unlink(dateiname) verwendet.
os.unlink() dürfte aber portabler sein und auch mit Leerzeichen und anderen speziellen Zeichen in dateiname zurechtkommen. Wer weiss, was die Shell so treibt.
Bei Risisko halt: os.system('rm "'+dateiname+'"')
Das nützt nix. Sobald Dritte den Dateinamen bestimmen können, bekommst du Probleme:
$ cat demo.py import glob import os
for filename in os.listdir(): if not filename.endswith(".py"): print("removing", repr(filename)) os.system("rm '" + filename + "'") $ touch foo'\ -f;echo\ 'oops $ python3 demo.py removing "foo' -f;echo 'oops" oops $
participants (5)
-
Hermann Riemann
-
ole-usenet-spam@gmx.net
-
Peter Heitzer
-
Peter Otten
-
Thomas Orgelmacher