Keine Konsolen Box

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Anika354
User
Beiträge: 4
Registriert: Sonntag 24. September 2006, 19:06

Montag 25. September 2006, 01:59

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
BlackJack

Montag 25. September 2006, 06:41

Ich vermute mal Du arbeitest unter Windows. Dann ändere die Dateierweiterung von .py auf .pyw
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 25. September 2006, 07:12

Nur helfen dir dann die print-Anweisungen nichts, weil du sie nicht mehr sehen wirst. :)
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 25. September 2006, 10:00

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.
Anika354
User
Beiträge: 4
Registriert: Sonntag 24. September 2006, 19:06

Montag 25. September 2006, 13:13

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 25. September 2006, 13:45

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Anika354
User
Beiträge: 4
Registriert: Sonntag 24. September 2006, 19:06

Montag 25. September 2006, 15:20

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
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 25. September 2006, 15:33

<del>Die Methode wird klein geschrieben und befindet sich im os-Modul, daher erfolgt der Aufruf mit os.popen().</del>
Zuletzt geändert von Y0Gi am Montag 25. September 2006, 15:42, insgesamt 1-mal geändert.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 25. September 2006, 15:34

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].
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 25. September 2006, 15:42

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Anika354
User
Beiträge: 4
Registriert: Sonntag 24. September 2006, 19:06

Montag 25. September 2006, 20:21

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
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 25. September 2006, 22:08

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.
Antworten