Am 30.08.2017 um 21:24 schrieb Peter Otten:
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 $
ok. Allerdings fällt mir bei der Gelegenheit ein, was ist, wenn der Dateiname ein bytestring ist, der sich nicht nach utf konvertieren lässt? In C ist ja als Dateiname alles außer '/' und '\0' erlaubt. Hermann der bisher bytestring lediglich zum Vergleich von Dateiinhalten verwendet hat. -- http://www.hermann-riemann.de