Wie würde ich das Äquivalent von mv src/* dest/
in Python machen?
>>> source_files = '/PFAD/ZU/ORDNER/*'
>>> destination_folder = 'PFAD/ZU/ORDNER'
>>> # Äquivalent zu $ mv source_files destination_folder
Wie würde ich das Äquivalent von mv src/* dest/
in Python machen?
>>> source_files = '/PFAD/ZU/ORDNER/*'
>>> destination_folder = 'PFAD/ZU/ORDNER'
>>> # Äquivalent zu $ mv source_files destination_folder
Die akzeptierte Antwort ist nicht die richtige, da es bei der Frage nicht darum geht, eine Datei in eine Datei umzubenennen, sondern viele Dateien in ein Verzeichnis zu verschieben. shutil.move
wird die Arbeit erledigen, aber für diesen Zweck ist os.rename
nutzlos (wie in den Kommentaren angegeben), da das Ziel einen expliziten Dateinamen haben muss.
Auch möglich mit der Verwendung der Methode subprocess.run()
.
python:
>>> import subprocess
>>> neu = "/Pfad/zum/Ziel"
>>> alt = "/Pfad/zum/neuen/Ziel"
>>> prozess = "mv ..{} ..{}".format(alt, neu)
>>> subprocess.run(prozess, shell=True) # erinnern Sie sich nicht, weisen Sie den Wert shell zu True zu.
Dies funktioniert einwandfrei bei der Arbeit unter Linux. Unter Windows tritt wahrscheinlich ein Fehler auf, da es kein mv-Befehl gibt.
Basierend auf der Antwort hier beschrieben, ist die Verwendung von subprocess
eine weitere Option.
So etwas wie das:
subprocess.call("mv %s %s" % (source_files, destination_folder), shell=True)
Ich bin neugierig auf die Vor- und Nachteile dieser Methode im Vergleich zu shutil
. Da ich in meinem Fall bereits aus anderen Gründen subprocess
verwende und es zu funktionieren scheint, tendiere ich dazu, dabei zu bleiben.
Dies hängt von der Shell ab, in der Sie Ihr Skript ausführen. Der mv
-Befehl gilt für die meisten Linux- Shells (bash, sh usw.), funktioniert jedoch auch in einem Terminal wie Git Bash unter Windows. Für andere Terminals müssen Sie mv
in einen alternativen Befehl ändern.
Dies ist eine Lösung, die das shell
nicht mit mv
aktiviert.
from subprocess import Popen, PIPE, STDOUT
quelle = "Pfad/zur/aktuellen/datei.foo",
ziel = "Pfad/zum/neuen/ziel/für/datei.foo"
p = Popen(["mv", "-v", quelle, ziel], stdout=PIPE, stderr=STDOUT)
ausgabe, _ = p.communicate()
ausgabe = ausgabe.strip().decode("utf-8")
if p.returncode:
print(f"E: {ausgabe}")
else:
print(ausgabe)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.