Hallo liebe Community,
ich wollte gerne mit Python eine Datei über cmd an einen anderen Ort kopieren.
Ich hab es mit "os.system" versucht, aber damit kann man immer nur einen Befehl ausführen. Ich muss aber mehrere Befehle hintereinander absetzten, wie in ein Verzeichnis wechseln, prüfen ob Datei vorhanden ist und Datei kopieren...
Wisst ihr wie man das machen kann?
Mit freundlichen Grüßen
Schaf220
Datei über cmd kopieren?
Hallo,
eigentlich kannst du einfach mehrere Aufrufe von os.system() nacheinander machen. Allgemein sollte man statt os.system() aber Methoden aus dem subprocess-Modul verwenden (da kannst du dann auch die Rückgabe der genutzten Befehle lesen). Konkret sollte man dein Anliegen aber mit Python-Mitteln implementieren und auf die Verwendung von Shell-Befehlen gänzlich verzichten. Python hat alles an Bord, was du da beschrieben hast - die Verwendung externer Tools führt nur zu Fehlern und macht die Portierung deines Skripts unnötig schwer.
Schönen Gruß,
brb
eigentlich kannst du einfach mehrere Aufrufe von os.system() nacheinander machen. Allgemein sollte man statt os.system() aber Methoden aus dem subprocess-Modul verwenden (da kannst du dann auch die Rückgabe der genutzten Befehle lesen). Konkret sollte man dein Anliegen aber mit Python-Mitteln implementieren und auf die Verwendung von Shell-Befehlen gänzlich verzichten. Python hat alles an Bord, was du da beschrieben hast - die Verwendung externer Tools führt nur zu Fehlern und macht die Portierung deines Skripts unnötig schwer.
Schönen Gruß,
brb
- Schaf220
- User
- Beiträge: 113
- Registriert: Montag 11. August 2008, 16:00
- Wohnort: Bremen
- Kontaktdaten:
Wie kann man denn mehrere Befehle an "os.system" übergeben? Ich möchte jetzt zum Beipiel das Verzeichnis wechseln mit os.system("cd C:\Users\User\Desktop") und mir danach anzeigen lassen was alles in dem Verzeichnis liegt mit "dir".
Jetzt zeigt er nur das Verzeichnis an in dem sich meine Pythondatei befindet.
Code: Alles auswählen
import os
test = os.system("cd C:\Users\HansPeter\Desktop")
test = os.system("dir")
Wie wäre es mit
?
Gruß
Whitie
Code: Alles auswählen
import os
print os.listdir(r'C:\Users\HansPeter\Desktop')
Gruß
Whitie
So beispielsweise:Schaf220 hat geschrieben:Wie kann man denn mehrere Befehle an "os.system" übergeben? Ich möchte jetzt zum Beipiel das Verzeichnis wechseln mit os.system("cd C:\Users\User\Desktop") und mir danach anzeigen lassen was alles in dem Verzeichnis liegt mit "dir".
Jetzt zeigt er nur das Verzeichnis an in dem sich meine Pythondatei befindet.Code: Alles auswählen
import os test = os.system("cd C:\Users\HansPeter\Desktop") test = os.system("dir")
Code: Alles auswählen
os.system("pwd;cd ..;pwd")
/home/BENUTZER
/home
- Schaf220
- User
- Beiträge: 113
- Registriert: Montag 11. August 2008, 16:00
- Wohnort: Bremen
- Kontaktdaten:
Danke Whitie,
aber damit ist leider das eigentliche Problem umgangen worden. Ich kann möchte vieleicht ja auch noch andere Befehle anhängen, oder zum Beispiel die Ausgabe von "dir" weiter verwenden.
Mit freundlichen Grüßen
Schaf220
aber damit ist leider das eigentliche Problem umgangen worden. Ich kann möchte vieleicht ja auch noch andere Befehle anhängen, oder zum Beispiel die Ausgabe von "dir" weiter verwenden.
Mit freundlichen Grüßen
Schaf220
*waaaaah*. Genau falsch: Du umgehst die eigentliche Lösung. Was immer du da gerade machst: Es ist mit an Sicherheit grenzender Wahrscheinlichkeit Unfug. Wiiiiirklich!Schaf220 hat geschrieben:Danke Whitie,
aber damit ist leider das eigentliche Problem umgangen worden.
Du möchtest in ein Verzeichnis wechseln, überprüfen, ob eine Datei existiert und diese kopieren? Das geht mit Python deutlich einfacher, als du es vor hast:
Code: Alles auswählen
import os
import shutil
datei = "/home/benutzer/datei"
ziel_datei = "%s_222" % datei
if os.path.exists(datei):
shutil.copy(datei, ziel_datei)
- noisefloor
- User
- Beiträge: 3854
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@Schaf220: Das Modul os kann abgesehen davon viel mehr als os.system. ich bin mir sehr sicher, dass es auch Funktionen zur Auflistung aller Dateien gibt. Klarer Vorteil: Die bleibst innerhalb des Python-Interpreters und kannst Fehler etc. viel besser abfangen. Außerdem erhältst du als Ausgabe immer ein Python-Objekt (Liste, Tuple...), mit der du viel besser weiterarbeiten kannst als mit einem Rückgabewert von der Kommandozeile.
Gruß, noisefloor
@Schaf220: Das Modul os kann abgesehen davon viel mehr als os.system. ich bin mir sehr sicher, dass es auch Funktionen zur Auflistung aller Dateien gibt. Klarer Vorteil: Die bleibst innerhalb des Python-Interpreters und kannst Fehler etc. viel besser abfangen. Außerdem erhältst du als Ausgabe immer ein Python-Objekt (Liste, Tuple...), mit der du viel besser weiterarbeiten kannst als mit einem Rückgabewert von der Kommandozeile.
Gruß, noisefloor