Seite 1 von 1

Keine Konsolen Box

Verfasst: Montag 25. September 2006, 01:59
von Anika354
Hi,
wie ihr sicher gleich merken werdet bin ich noch sehr neu bei Python !:oops:
Ich habe ein kleines Programm aus bytheofpython geschrieben bei dem man Dateien in einem anderen Ordner sichern kann ! Was mich aber sehr nervt ist das immer dieses schwarze Konsolenfenster kurz aufgeht und sich wieder schließt wenn ich das Programm ausführe ! Gibt es da keine andere Möglichkeit ??

kurzer Code Auszug wie ich das ausführe:

Code: Alles auswählen

#Befehl create
sicherungsbefehl = "zip -qr %s %s" % (sicherungsname, " ".join(quellenordner))



#Ausführung von Befehl mit Fehlerausgabe
if os.system(sicherungsbefehl) == 0:

    print "Operation erfolgreich abgeschlossen !!"

else:

print " Operation abgebrochen !!"
Wenn jemand eine andere Lösung weiss und mir helfen kann wäre das echt nett ! Danke schon einmal fürs durchlesen :D !!

ciao Ani

Verfasst: Montag 25. September 2006, 06:41
von BlackJack
Ich vermute mal Du arbeitest unter Windows. Dann ändere die Dateierweiterung von .py auf .pyw

Verfasst: Montag 25. September 2006, 07:12
von birkenfeld
Nur helfen dir dann die print-Anweisungen nichts, weil du sie nicht mehr sehen wirst. :)

Verfasst: Montag 25. September 2006, 10:00
von Y0Gi
Alternativ kannst du am Ende ein raw_input() anhängen. Dann bleibt das Fenster so lange geöffnet, bis du Enter gedrückt hast.

Übrigens sollte das letzte print in deinem Code eingerückt sein, damit es syntaktisch korrekt ist.

Danke ! Danke !!

Verfasst: Montag 25. September 2006, 13:13
von Anika354
Hallo,
ich finds echt nett wie schnell einem hier geholfen wird ! :wink:
Ich hab eure Tipps probiert aber das schwarze Fenster geht leider immer noch auf ....
Das ich die Print-Rückmeldung dann nicht mehr sehe finde ich nicht so schlimm ! Es geht mir viel mehr darum das, dass ganze unsichtbar abläuft und nicht immer dieses Fenster aufgeht . Er soll wenn ich das Programm öffne einfach selber wie von Zauberhand, ohne das schwarze Fenster, die Daten sichern ! Ob es dann geklappt hat kann ich ja sehen wenn ich in den Ordner schaue.

trotzdem vielen lieben Dank

*wink* Ani

Re: Danke ! Danke !!

Verfasst: Montag 25. September 2006, 13:45
von gerold
Anika354 hat geschrieben:Es geht mir viel mehr darum das, dass ganze unsichtbar abläuft und nicht immer dieses Fenster aufgeht.
Hi Ani!

Vielleicht bringt es dich weiter, wenn du ``os.system()`` durch einen anderen Aufruf ersetzt.

http://docs.python.org/lib/node537.html

Sollte das oben genannte ``subprocess``-Beispiel nicht funktionieren, dann probier es doch mal damit: http://docs.python.org/lib/node539.html

mfg
Gerold
:-)

Ja genau das wäre gut !!

Verfasst: Montag 25. September 2006, 15:20
von Anika354
Ich glaube das würde mein Problem lösen !!
@gerold : DANKE !!!

Aber ich bin leider noch irgendwie zu dumm das ganze auf mein Programm umzuschreiben weil er die Methode Popen nicht kennt :oops: !
Muss ich da noch ein Modul integrieren ?
Habs mal so versucht : (ist wahrscheinlich total Falsch :cry: )

p = Popen("sicherungsbefehl", shell=True)
sts = os.waitpid(p.pid, 0)

Ich weiss ich bin so ein Anfänger sorry wenn ich euch mit sowas belästige und danke für die nette Hilfe !

ciao Ani

Verfasst: Montag 25. September 2006, 15:33
von Y0Gi
<del>Die Methode wird klein geschrieben und befindet sich im os-Modul, daher erfolgt der Aufruf mit os.popen().</del>

Verfasst: Montag 25. September 2006, 15:34
von birkenfeld

Code: Alles auswählen

from subprocess import Popen
x = Popen(...)
oder

Code: Alles auswählen

import subprocess
x = subprocess.Popen(...)
So sollte es klappen. Details findest du z.B. in [wiki]ModulImport[/wiki].

Re: Ja genau das wäre gut !!

Verfasst: Montag 25. September 2006, 15:42
von gerold
Anika354 hat geschrieben:

Code: Alles auswählen

p = Popen("sicherungsbefehl", shell=True)
sts = os.waitpid(p.pid, 0)
Hi Ani!

Sorry! Ich habe mir das Beispiel nicht genau angesehen. Ich wusste nicht, dass es so schlecht ist.

Dieser Code hier funktioniert sicher:

Code: Alles auswählen

from subprocess import Popen

p = Popen("dir", shell = True)
retcode = p.wait()

print retcode
mfg
Gerold
:-)

Es geht wirklich !!!

Verfasst: Montag 25. September 2006, 20:21
von Anika354
Es funktioniert ganz easy :o !!! Auch wenn ich es nicht ganz verstehe aber das kommt schon noch mit der Zeit ! Der Retcode 1 und 0 bedeutet ob es funktioniert hat bzw True und False !

VIELEN VIELEN DANK FÜR DIE NETTE HILFE !!!

IHR SEIT SUPER !!!!!

bis bald Ani

Re: Es geht wirklich !!!

Verfasst: Montag 25. September 2006, 22:08
von Y0Gi
Anika354 hat geschrieben:Es funktioniert ganz easy :o !!! Auch wenn ich es nicht ganz verstehe aber das kommt schon noch mit der Zeit ! Der Retcode 1 und 0 bedeutet ob es funktioniert hat bzw True und False !
Ich weiß nicht, wie es hier gedacht ist, aber normalerweise sieht das anders aus: 0 bedeutet 'ok', 1 generell 'Fehler', 2 steht für Fehler beim Aufruf wie falsche Argumente auf der Kommandozeile. Höhere Zahlen sind anwendungsspezifisch. Müsste auch in den Python-Docs stehen, habe ich aber auf die schnelle nicht wiedergefunden.