Leere Datei mit python erstellen [duplizieren]

Diese Frage hat hier schon eine Antwort:

  • Berührung mit Python? 11 antworten

Ich möchte eine Datei mit Pfad x mit Python erstellen. Ich benutze os.system(y) wo y = 'touch %s' % (x) . Ich habe nach einer Nicht-Verzeichnis-Version von os.mkdir , aber ich konnte nichts finden. Gibt es ein Werkzeug wie dieses, um eine Datei zu erstellen, ohne es zu öffnen, oder mit System oder Popen / Subprocess?

2 Solutions collect form web for “Leere Datei mit python erstellen [duplizieren]”

Es gibt keine Möglichkeit, eine Datei zu erstellen, ohne es zu öffnen Es gibt os.mknod("newfile.txt") ( aber es erfordert root-Berechtigungen auf OSX ). Der Systemaufruf zum Erstellen einer Datei ist eigentlich open() mit dem O_CREAT Flag. Also egal wie du die Datei immer öffnen wirst.

Also der einfachste Weg, um einfach eine Datei zu erstellen, ohne es zu beschneiden, falls es existiert, ist das:

 open(x, 'a').close() 

Eigentlich könntest du die .close() auslassen, da der Refcounting GC von CPython es sofort schließen wird, nachdem die open() -Anweisung beendet ist – aber es ist sauberer, es explizit zu machen und sich auf CPython-spezifisches Verhalten zu verlassen, ist auch nicht gut.

Falls Sie das Verhalten des touch -Verhaltens wünschen (dh die Mtime aktualisieren, falls die Datei existiert):

 import os def touch(path): with open(path, 'a'): os.utime(path, None) 

Sie können dies erweitern, um auch beliebige Verzeichnisse im Pfad zu erstellen, die nicht vorhanden sind:

 basedir = os.path.dirname(path) if not os.path.exists(basedir): os.makedirs(basedir) 

Natürlich gibt es einen Weg, um Dateien ohne Öffnen zu erstellen. Es ist so einfach wie das Aufrufen von os.mknod("newfile.txt") . Der einzige Nachteil ist, dass dieser Aufruf Wurzelberechtigungen auf OSX erfordert.

Python ist die beste Programmiersprache der Welt.