Liebe Leute vom Python-Forum,
ich entschuldige mich im voraus, wenn meine Frage richtig "blöd" sein sollte, ich habe aber leider meistens etwas hilfe nötig.
Meine Frage wäre da :kann man mit einem python befehl einen befehl an die Windows-Komanndizeile geben? Und wenn ja bitte kurz sagen wie...
Ich bedanke mich im Voraus schon sehr herzlich bei denen die Antworten
Viele Liebe Grüße
Dango
Auf Windows kommando zeile zugreifen
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
- roschi
- User
- Beiträge: 225
- Registriert: Samstag 29. März 2008, 18:58
- Wohnort: Thueringen, Deutschland
- Kontaktdaten:
hallo Dango!
schau dir mal das modul ``subprocess`` an.
lg
roschi
PS: sowas wurde hier im forum schon oft gefragt -> http://www.python-forum.de/topic-13124.html
schau dir mal das modul ``subprocess`` an.
lg
roschi
PS: sowas wurde hier im forum schon oft gefragt -> http://www.python-forum.de/topic-13124.html
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Vielen Dank für die schnelle und nette Antwort!
Welche funktion ist den nun die, wo man dann den Befehl für die Komanndozeile eingibt? Das wäre dann meine letzte Frage.
Ich bedanke mich im voraus für eine ebenso schnelle Antwort wie auf die Erste.
mit vielen Grüßen
Dango
Welche funktion ist den nun die, wo man dann den Befehl für die Komanndozeile eingibt? Das wäre dann meine letzte Frage.
Ich bedanke mich im voraus für eine ebenso schnelle Antwort wie auf die Erste.
mit vielen Grüßen
Dango
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
- roschi
- User
- Beiträge: 225
- Registriert: Samstag 29. März 2008, 18:58
- Wohnort: Thueringen, Deutschland
- Kontaktdaten:
[wiki]Neue Features#Subprocess[/wiki]
ich habe nicht umsonst auf den thread verwiesen...
ich habe nicht umsonst auf den thread verwiesen...
[size=117]Fuer Alle, die in Python einsteigen wollen, kann ich das Buch [url=http://abop-german.berlios.de/]A Byte of Python[/url] nur waermstens empfehlen![/size]
Oh, tut mir leid. Das hatte ich jetzt nicht ganz beachtet. Aber ich bin noch ein blutiger Anfänger: gibt es vielleicht jemand der mir erklären könnte wie man jetzt z.B. der Windows Kommandozeile den Befehl "cd C://" und dann z.B. "run example.exe" gitbt?
Ich bedanke mich im voraus für eine nette,knappe und Idiotenfeste Erklärung. Vielen Dank
Mit vielen Grüßen
Dango
Ich bedanke mich im voraus für eine nette,knappe und Idiotenfeste Erklärung. Vielen Dank
Mit vielen Grüßen
Dango
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Und warum machst du das nicht per Python?
Code: Alles auswählen
import os
import subprocess
os.chdir("C:")
subprocess.call("example.exe")
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
cofi, subprocess kennt auch den Parameter ``cwd``, man braucht das Working Directory des Prozesses nicht zu ändern. Sollte man idR. auch nicht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ah gut zu wissen Hatte noch nicht die Gelegenheit `subprocess' zu benutzen.
Code: Alles auswählen
import subprocess
subprocess.call("example.exe", cwd="C:")
Vielen Vielen Dank an Alle die mir so schnell geholfen haben.
Nach etwas rumprobieren fand ich heraus das ich eher die version mit os.chdir bevorzuge, denn i-wie will mein Python nicht ganz recht wenn ich ihm dur "cwd=" den pfad vorlege. Da meckert es dann immer rum das entweder der pfad ungültig ist, die datei fehlt u.s.w aber wenn ich es mit dem os modul mache dann ist alles im Lot.
nun ich bedanke mich bei dern Herren vielmals für die schnelle Hilfe
mit vielen Grüßen
Dango
Nach etwas rumprobieren fand ich heraus das ich eher die version mit os.chdir bevorzuge, denn i-wie will mein Python nicht ganz recht wenn ich ihm dur "cwd=" den pfad vorlege. Da meckert es dann immer rum das entweder der pfad ungültig ist, die datei fehlt u.s.w aber wenn ich es mit dem os modul mache dann ist alles im Lot.
nun ich bedanke mich bei dern Herren vielmals für die schnelle Hilfe
mit vielen Grüßen
Dango
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Zeig doch bitte mal den Code, denn die ``os.chdir()``-Lösung ist eine schlechte Idee die dir möglicherweise an anderer Stelle Probleme bereiten wird.Dango hat geschrieben:Nach etwas rumprobieren fand ich heraus das ich eher die version mit os.chdir bevorzuge, denn i-wie will mein Python nicht ganz recht wenn ich ihm dur "cwd=" den pfad vorlege. Da meckert es dann immer rum das entweder der pfad ungültig ist, die datei fehlt u.s.w
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Also die nun zum erfolg geführt hat war folgende:
Code: Alles auswählen
import os
import subprocess
os.chdir("c:/Programme/distyingyang02")
subprocess.call("yingyang02.exe")
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
Dann musst du bei cwd= auch c:/Programme/distyingyang02angeben und nicht C:.
Code: Alles auswählen
import subprocess
subprocess.call("example.exe", cwd="c:/Programme/distyingyang02")
Dann kommt immmer folgendes:
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
subprocess.call("yingyang02.exe", cwd="C:/Programme/distyingyang02")
File "C:\Python25\lib\subprocess.py", line 443, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python25\lib\subprocess.py", line 593, in __init__
errread, errwrite)
File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
startupinfo)
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden
oder geht das einfach net unter python 2.5?
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
subprocess.call("yingyang02.exe", cwd="C:/Programme/distyingyang02")
File "C:\Python25\lib\subprocess.py", line 443, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python25\lib\subprocess.py", line 593, in __init__
errread, errwrite)
File "C:\Python25\lib\subprocess.py", line 793, in _execute_child
startupinfo)
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden
oder geht das einfach net unter python 2.5?
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Müsste so gehen:
Kann man auch ganz einfach erklären, warum das so ist. Und zwar wird im %PATH% unter Windows immer der aktulle Pfad geprüft um das Programm zu finden. Wenn man den Pfad ändert, dann sucht er logischerweise im neuen Ordner. Wenn man aber ``cwd`` setzt wird der ``%PATH%`` des Python-Interpreters nicht geändert sondern nur der des aufzurufenden Programms. Dieses kann aber nicht gestartet werden, da es nicht im ``%PATH%`` vorhanden ist. Also muss man den vollständigen Pfad angeben. Müsste so stimmen, habe kein Windows um das zu testen.
Code: Alles auswählen
import subprocess
subprocess.call([r'c:\Programme\distyingyang02\example.exe'], cwd=r"c:\Programme\distyingyang02")
Zuletzt geändert von Leonidas am Sonntag 14. Dezember 2008, 17:54, insgesamt 2-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich Dödel!
Das kommt davon, wenn man immer unter Linux programmiert...
Bei Windows wird \ zum statt / benutzt. Als "normaler" String sieht das bei Python so aus:Leserlicher ist das aber als raw String:
@Leonidas: die Pfadangabe zu *.exe ist bei aber immer noch falsch. Entweder mit \ den Backslash escapen oder raw Strings benutzen. Bei der cwd-Angabe haste es ja richtig gemacht.
Das kommt davon, wenn man immer unter Linux programmiert...
Bei Windows wird \ zum statt / benutzt. Als "normaler" String sieht das bei Python so aus:
Code: Alles auswählen
path = "c:\\Programme\\distyingyang02"
Code: Alles auswählen
path = r"c:\Programme\distyingyang02"
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das ist egal und löst das Problem nicht. Der Win-API ist es nämlich egal ob Slashes oder Backslashes im Pfad vorkommen. Die Lösung sieht so aus wie ich geschrieben habe: einfach den vollen Pfad angeben.derdon hat geschrieben:Das kommt davon, wenn man immer unter Linux programmiert...
Bei Windows wird \ zum statt / benutzt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Jein. Man sollte es machen und ich habe es editiert aber es macht keinen Unterschied in dem Fall, da weder ``\P``, ``\d`` noch ``\e`` Escape-Sequenzen sind, somit werden die ohne Änderungen weitergegeben.derdon hat geschrieben:@Leonidas: die Pfadangabe zu *.exe ist bei aber immer noch falsch. Entweder mit \ den Backslash escapen oder raw Strings benutzen. Bei der cwd-Angabe haste es ja richtig gemacht.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ah, wieder was dazugelernt. Ganz schön schlau, diese Win-API...Leonidas hat geschrieben:Das ist egal und löst das Problem nicht. Der Win-API ist es nämlich egal ob Slashes oder Backslashes im Pfad vorkommen. Die Lösung sieht so aus wie ich geschrieben habe: einfach den vollen Pfad angeben.derdon hat geschrieben:Das kommt davon, wenn man immer unter Linux programmiert...
Bei Windows wird \ zum statt / benutzt.
Es funktioniert!! Klasse!! Danke Leonidas!
nur ne ganz kurze Frage zum Verständnis: was bedeuten die kleinen r , und warum wurde der pfad nun in eckigen Klammern geschrieben?
aber danke schon mal vielmals für die Hilfe und die Erklärung.
Mit vielen Grüßen
Dango
nur ne ganz kurze Frage zum Verständnis: was bedeuten die kleinen r , und warum wurde der pfad nun in eckigen Klammern geschrieben?
aber danke schon mal vielmals für die Hilfe und die Erklärung.
Mit vielen Grüßen
Dango
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(