Python WinRAR Kommandozeile ausführen

te one

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.252
Hallo!
Ich habe ein kleines Skript gemacht das einfach nur einen bestimmten Ordner sichern soll. (Backup im .zip-Format)

Nun bildet mein Skript erstmal die Syntax für die Kommandozeile:

Code:
zip_befehl = 'WinRAR a -r -y "'+ziel_verzeichnis+heute+'.zip" "'+quellen+'"'
danach lasse ich zum Test den Wert von zip_befehl ausgeben.

Dies zeigt mir folgendes an:
Code:
WinRAR a -r -y "C:\Test\Backup\20090922.zip" "C:\Test\Daten"

Füge ich diese Syntax per Hand einfach in die Command-Zeile ein, habe ich sofort ein Backup! Lasse ich dieses aber durch mein Skript machen, bekomme ich den Fehlercode 1 ("Warnung. Es traten nicht schwerwiegende Fehler auf.") von Winrar zurück.
Was mache ich falsch??

Mein Befehl zum ausführen ist wie folgt:
Code:
# Sicherung starten
if os.system(zip_befehl) == 0:
	print ('Erfolgreiche Sicherung')
else:
	print ('Sicherung fehlgeschlagen!')
	print (os.system(zip_befehl))

Es wäre sehr nett wenn mir jemand helfen könnte

mfg
te one

Ps: die WinRAR.exe liegt auch gleich im verzeichnis das normal bei cmd aufgeht (also C:\Dokumente und Einstellungen\Benutzername)
Funktioniert ja eben auch wenn ichs einfach (des was mein skript ausgibt) unter cmd reinkopiere...
 
hm wie/wo muss ich die genau einfügen??

Wäre schön wenn du (oder jemand anderes der sich damit auskennt) einfach mal in den befehl noch des einfügen was noch reingehört. aber eigentlich denke ich, dass das ja stimmen sollte, weils ja auch funktioniert, wenn ichs einfach so per hand ausführe!

Achja: ganz oben im script lass ich noch os und time importieren (also müsste es ja auf das os/system zurgreifen können!)
Ergänzung ()

ah ich hab die lösung!
die kommandozeile von python wird automatisch mit c:\python31\... (wo halt das script liegt) geöffnet, und nicht mit dem Standard (c:\Dokumente und Einstellungen\Benutzername)

Hab also jetzt die winrar.exe in den pfad meines scripts gelegt und jetzt gehts.

Allerdings wäre es mir lieber wenn ichs nicht unbedingt dort liegen haben müsste. Aber das sollte eigentlich kein problem jetzt mehr werden, da ich jetzt ja weiß dass ich erst noch in des verzeichnis muss
 
Zuletzt bearbeitet:
Mit os.path.dirname(r"C:\wasweisich\Winrar.exe") kannst du dir den Pfad von Winrar ausgeben lassen.
 
Nur weil eine Befehlszeile im "Ausführen" Dialog oder in der Konsole funktioniert, heißt es noch nicht das das ganze dann auch in Python funktioniert, weil:
- der "Ausführen" Dialog unter anderem die PATH Variable heranzieht wenn das Programm ohne Pfadangaben eingegeben wurde
- Konsole, siehe "Ausführen" Dialog
- Python will es da sicher genauer wissen, d.h. vollständiger Pfad zur Exe
 
Zurück
Oben