Seite 1 von 1

Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 09:56
von Schaf220
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

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 10:02
von Barabbas
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

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 10:24
von Schaf220
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".

Code: Alles auswählen

import os 
test = os.system("cd C:\Users\HansPeter\Desktop")
test = os.system("dir")
Jetzt zeigt er nur das Verzeichnis an in dem sich meine Pythondatei befindet.

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 10:34
von Whitie
Wie wäre es mit

Code: Alles auswählen

import os
print os.listdir(r'C:\Users\HansPeter\Desktop')
?
Gruß
Whitie

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 10:39
von Barabbas
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".

Code: Alles auswählen

import os 
test = os.system("cd C:\Users\HansPeter\Desktop")
test = os.system("dir")
Jetzt zeigt er nur das Verzeichnis an in dem sich meine Pythondatei befindet.
So beispielsweise:

Code: Alles auswählen

os.system("pwd;cd ..;pwd")
/home/BENUTZER
/home
Aber wie gesagt: Lass es einfach - das führt nur zu *riesigem* Chaos, schlecht wartbarem Code und verringertem Supportwillen der Forenmitglieder hier ;). Alles was du brauchst ist in os und shutil zu finden!

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 10:41
von Schaf220
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

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 10:44
von Barabbas
Schaf220 hat geschrieben:Danke Whitie,
aber damit ist leider das eigentliche Problem umgangen worden.
*waaaaah*. Genau falsch: Du umgehst die eigentliche Lösung. Was immer du da gerade machst: Es ist mit an Sicherheit grenzender Wahrscheinlichkeit Unfug. Wiiiiirklich!

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)
Und wenn du es schon unbedingt umständlich machen möchtest: Ich habe dir doch oben schon "subprocess" empfohlen. Hast du dir das mal angeschaut? Unten auf der Seite gibt es doch dutzende Beispiele

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 11:25
von noisefloor
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

Re: Datei über cmd kopieren?

Verfasst: Montag 19. Juli 2010, 11:40
von Schaf220
Danke schön für eure Hilfe!