Hallo!
Ich möchte mit einer kleinen Oberfläche auch andere Programme aufrufen. Wo muss ich dafür nachschauen?
aufruf und ausführen helfen nicht weiter als Keywords und was passenderes ist mir noch nicht eingefallen.
Hoffe es gibt ne Möglichkeit und jemand kann mir helfen
LG
Bär
Wie rufe ich aus python andere Programme auf (Windows)?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Bär!E1sbaer hat geschrieben:andere Programme aufrufen
Dafür wurde das Modul "subprocess" geschaffen.
Siehe:
- http://docs.python.org/lib/module-subprocess.html
- [wiki=Neue Features#Subprocess]Wiki: Subprocess[/wiki]
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
es gibt natürlich auch noch die möglichkeit.
mit os.system kann beliebige befehle ausführen. Sie blocken aber das Pythonprogramm bis es beendet wird.
Code: Alles auswählen
import os
os.system("C:\Programme\PROGRAMMEFOLDER\Pro.exe")
Hallo!
Mit dem letzten Beispiel hier wird bei mir nun wirklich ein Programm gestartet, allerdings erscheint eine Eingabeaufforderung und die bleibt auch. Gibts nen Weg das man es ohne die starten kann?
Und wo liegt das Problem, wenn ich das hier versuche?
Da seh ich dann nur ganz kurz ein Fenster auf gehen und dann schließt es sich wieder... In der Verknüpfung auf dem Desktop ist beim Programmaufruf noch ein Parameter mit angegeben:
Mfg Bär
Mit dem letzten Beispiel hier wird bei mir nun wirklich ein Programm gestartet, allerdings erscheint eine Eingabeaufforderung und die bleibt auch. Gibts nen Weg das man es ohne die starten kann?
Und wo liegt das Problem, wenn ich das hier versuche?
Code: Alles auswählen
os.system("C:\Programme\Windows Media Player\wmplayer.exe")
Muss ich den Parameter mit angeben? Eigentlich nicht oder? Wenn ich es über die Eingabeaufforderung mit"C:\Programme\Windows Media Player\wmplayer.exe" /prefetch:1
aufrufe gehts ohne Probleme. Liegt es vielleicht an den Leerzeichen im Verzeichnissnamen?C:\Programme\Windows Media Player\wmplayer.exe
Mfg Bär
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Löst zwar dein Problem nicht, aber ich gebe die mal trotzdem einen Tipp: Prade unter Windows die in "normale" Strings packen, sonst könnten Escape-Sequenzen wie ``\t`` oder ``\b`` ausgeführt werden. Deshalb solltest du entweder die Strings escapenE1sbaer hat geschrieben:Und wo liegt das Problem, wenn ich das hier versuche?Code: Alles auswählen
os.system("C:\Programme\Windows Media Player\wmplayer.exe")
Code: Alles auswählen
os.system("C:\\Programme\\Windows Media Player\\wmplayer.exe")
Code: Alles auswählen
os.system(r"C:\Programme\Windows Media Player\wmplayer.exe")
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Wer ist eigentlich auf diese *daemliche* Idee gekommen, dass sich die DOS-Box sofort nach Beenden des Programmes wieder schliesst? Was wuerde uns das fuer Fragen ersparen, wenn die Leute stattdessen sehen koennten, was das Programm tut...E1sbaer hat geschrieben:Da seh ich dann nur ganz kurz ein Fenster auf gehen und dann schließt es sich wieder...
Das frag ich mich jeden Tag oO''...Rebecca hat geschrieben:Wer ist eigentlich auf diese *daemliche* Idee gekommen, dass sich die DOS-Box sofort nach Beenden des Programmes wieder schliesst? Was wuerde uns das fuer Fragen ersparen, wenn die Leute stattdessen sehen koennten, was das Programm tut...E1sbaer hat geschrieben:Da seh ich dann nur ganz kurz ein Fenster auf gehen und dann schließt es sich wieder...
-
- User
- Beiträge: 29
- Registriert: Donnerstag 7. September 2006, 21:30
... das rührt von der Unsitte her, Python-Programme per Doppelklick zu starten.
Es gibt zwar den berühmten-Trick, aber der hilft auch nur, wenn das Programm fehlerfrei ist.
Es gibt zwar den berühmten
Code: Alles auswählen
raw_input()
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Früher, bei Windows 95, war das doch noch nicht so, oder täusche ich mich da? (Ich habe es so im Kopf, dass dann "Zum Beenden schließen" in der Titelleiste stand...)Rebecca hat geschrieben: Wer ist eigentlich auf diese *daemliche* Idee gekommen, dass sich die DOS-Box sofort nach Beenden des Programmes wieder schliesst? Was wuerde uns das fuer Fragen ersparen, wenn die Leute stattdessen sehen koennten, was das Programm tut...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hmm, bei MS-DOS-Programmen bestimmt, aber ob das bei Win32-Programmen war, weiß ich nicht mehr so genau. Irgendwann sind die Boxen dann zugegangen, aber kann auch sein, dass das was damit zu tun hat, dass ich keine DOS-Programme mehr eingesetzt habe.birkenfeld hat geschrieben:Früher, bei Windows 95, war das doch noch nicht so, oder täusche ich mich da? (Ich habe es so im Kopf, dass dann "Zum Beenden schließen" in der Titelleiste stand...)
Die Linux-DEs machens ja so, dass das Programm gestartet wird, aber ohne Konsole. Blöd nur, wenn es eine Ausgabe hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Aber man kann sie ja über die Konsole starten. Außerdem geben Linux-Programme dann was aus... während Windows-Anwendung sich stillschweigend verabschieden.Die Linux-DEs machens ja so, dass das Programm gestartet wird, aber ohne Konsole. Blöd nur, wenn es eine Ausgabe hat.
Leonidas hat geschrieben:Löst zwar dein Problem nicht, aber ich gebe die mal trotzdem einen Tipp: Prade unter Windows die in "normale" Strings packen, sonst könnten Escape-Sequenzen wie ``\t`` oder ``\b`` ausgeführt werden. Deshalb solltest du entweder die Strings escapenE1sbaer hat geschrieben:Und wo liegt das Problem, wenn ich das hier versuche?Code: Alles auswählen
os.system("C:\Programme\Windows Media Player\wmplayer.exe")
oder, noch besser, sie als Raw-Strings markieren, in denen Escape-Sequenzen nicht ausgewertet werden:Code: Alles auswählen
os.system("C:\\Programme\\Windows Media Player\\wmplayer.exe")
Code: Alles auswählen
os.system(r"C:\Programme\Windows Media Player\wmplayer.exe")
Also ich hab das nun mal getestet und leider klappt das dennoch nicht mit dem Starten von Programmen, die in Ordnern liegen die Leerzeichen im Namen tragen. Es geht auch nicht Programme zu öffnen die mehr als 8 Zeichen im Namen haben.
Muss ich es vielleicht mit der anderen Schreibweise von damals versuchen:
Eigene~1
oder so ähnlich? Das versuch ich gleich noch mal.
edit:
ja das hilft! Also einfach bei Dateinamen die länger sind als 8 Zeichen nach dem 6. abscheiden und dann ~1 dranhängen. Umlaute muss man auch in den ersten 6 Zeichen ersetzen, da weiß ich aber gerade nciht mehr genau wie.
Und dann hab ich halt, wenn ich die Programme einfach umbenenne und in "besser" benannte Ordner stecke das Problem dass die Dosbox mit aufgeht, was ich nicht gern sehen will. Wäre aber nicht so schlimm wenn ich die auszuführenden Programme automatisch im Vollbild starten könnte. Hat da einer ne Ahnung?
LG Bär
Falsch. Du darfst niemals vergessen, dass os.system genau das ausführt, was cmd auch machen würde. Geb mal bei cmd genau
C:\Programme\Windows Media Player\wmplayer.exe
ein. Wird nicht klappen... Wieso?... Da fehlen die Anführungszeichen! Ganz einfach.
"C:\Programme\Windows Media Player\wmplayer.exe"
So würde das Programm unter cmd klappen. Also probieren wir mal diesen Code:
Und wie durch Zauberhand, es funktioniert. Kein Problem... so gehen auch lange Dateinamen ohne Probleme ^__^
C:\Programme\Windows Media Player\wmplayer.exe
ein. Wird nicht klappen... Wieso?... Da fehlen die Anführungszeichen! Ganz einfach.
"C:\Programme\Windows Media Player\wmplayer.exe"
So würde das Programm unter cmd klappen. Also probieren wir mal diesen Code:
Code: Alles auswählen
import os
os.system(r'"C:\Programme\Windows Media Player\wmplayer.exe"')