Auf Windows kommando zeile zugreifen

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.
Dango
User
Beiträge: 37
Registriert: Mittwoch 26. November 2008, 15:46
Kontaktdaten:

Auf Windows kommando zeile zugreifen

Beitragvon Dango » Samstag 13. Dezember 2008, 15:34

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
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Beitragvon roschi » Samstag 13. Dezember 2008, 15:41

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
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Samstag 13. Dezember 2008, 15:44

Dango
User
Beiträge: 37
Registriert: Mittwoch 26. November 2008, 15:46
Kontaktdaten:

Beitragvon Dango » Samstag 13. Dezember 2008, 18:12

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
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
Benutzeravatar
roschi
User
Beiträge: 225
Registriert: Samstag 29. März 2008, 18:58
Wohnort: Thueringen, Deutschland
Kontaktdaten:

Beitragvon roschi » Samstag 13. Dezember 2008, 18:18

[wiki]Neue Features#Subprocess[/wiki]

ich habe nicht umsonst auf den thread verwiesen...
Fuer Alle, die in Python einsteigen wollen, kann ich das Buch A Byte of Python nur waermstens empfehlen!
Dango
User
Beiträge: 37
Registriert: Mittwoch 26. November 2008, 15:46
Kontaktdaten:

Beitragvon Dango » Samstag 13. Dezember 2008, 19:04

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
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Samstag 13. Dezember 2008, 20:42

Und warum machst du das nicht per Python?

Code: Alles auswählen

import os
import subprocess

os.chdir("C:")
subprocess.call("example.exe")
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 13. Dezember 2008, 21:37

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 Modvoice
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Samstag 13. Dezember 2008, 23:58

Ah gut zu wissen ;) Hatte noch nicht die Gelegenheit `subprocess' zu benutzen.

Code: Alles auswählen

import subprocess
subprocess.call("example.exe", cwd="C:")
Dango
User
Beiträge: 37
Registriert: Mittwoch 26. November 2008, 15:46
Kontaktdaten:

Beitragvon Dango » Sonntag 14. Dezember 2008, 12:18

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
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 14. Dezember 2008, 12:33

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

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Dango
User
Beiträge: 37
Registriert: Mittwoch 26. November 2008, 15:46
Kontaktdaten:

Beitragvon Dango » Sonntag 14. Dezember 2008, 17:05

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 :-(
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Beitragvon derdon » Sonntag 14. Dezember 2008, 17:28

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")
Dango
User
Beiträge: 37
Registriert: Mittwoch 26. November 2008, 15:46
Kontaktdaten:

Beitragvon Dango » Sonntag 14. Dezember 2008, 17:46

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

:cry:
oder geht das einfach net unter python 2.5?
ACHTUNG ANFÄNGER!! Ich entschuldige mich im Voraus für dumme Fragen :-(
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 14. Dezember 2008, 17:48

Müsste so gehen:

Code: Alles auswählen

import subprocess
subprocess.call([r'c:\Programme\distyingyang02\example.exe'], cwd=r"c:\Programme\distyingyang02")


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

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]