ein programm über python starten

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
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

Hallo zusammen

meine Aufgabe ist es ein Python- Skript zu schreiben das eine Reihe von *.bat dateien aufruft.Ich würde gerne wissen welche befehle mir bei meinem Problem helfen könne!!!
vielleicht os.poppen?

danke
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

mit "poppen" hat das nichts zu tun ;)

Schau dir mal subprocess an.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ja mit ``os.poppen`` kann man die Anzahl der Prozesse erhöhen. :twisted:

Speziell für `*.bat` ist ``os.startfile`` interessant. Aber ansonsten vergiss, dass das `os`-Modul Funktionen zum starten von Prozessen hat.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

Hallo, hab das nun mit os.startfile ausprobiert und es klappt!! cool :D
was ich noch fragen wollte, wenn man nun ein Programm damit startet, bleibt dann das Python- Skript so lange an dieser stelle bis das Programm fertig ist oder geht das Python gleich zum nächsten schritt!!!!!!!!!!!!!
Wenn ja wie kann man das abstellen?

danke
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dann schau dir mal ``subprocess.Popen`` an, wenn du ein anderes Verhalten willst. Nicht vergessen die `cmd.exe` für die BAT-Dateien anzugeben.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

hallo

bitte verflucht mich nicht oder denkt nicht schlecht von mir aber subprozess habe ich nicht! ich weiß aber auch nicht wieso!!!!
Und das trauige ist daran, ich kann nicht änderen ( eine andere Version installieren,...). Deshalb muss ich euch die Frage stellen wie man das Problem sonst löst ohne subprocess?

-->Wie kann man ein Programm *.bat starten und Python wartet bis das es zu ende ist?

danke
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Du sollst auch nicht nach subproZess, sondern nach subproCess suchen.
Das ist seit Python 2.4 dabei.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

ich habe die Python Version 2.2.1 eine 9 jahre alte Version :(

gibt es nicht einen älteren befehl für das Problem?

ich dachte mir es könnte mit
os.system()
os.spawnv
funktionieren oder

danke
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und was spricht dagegen sich das Leben einfacher zu machen, und eine Version zu installieren die zumindest halbwegs modern ist?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

leider es geht nicht, mein betreuer will es so haben und daher kann ich nichts machen, um eine neue Version zu intallieren brauch ich seine zustimmung

Somit muss ich mich mit dem zufrieden geben was ich habe
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Dann teste doch mal, ob es geht (mit ``os.system``, ``os.popen``, usw.).
Du könntest auch die BAT-Dateien in Python schreiben.

Ein Argument für das Update wären auch Sicherheitslücken, da die Version seit langem nicht mehr betreut wird. Du könntest dir aber auch den Source von ``subprocess`` anschauen, vllt ist das `pure Python` und du kannst es übernehmen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

max793 hat geschrieben:um eine neue Version zu intallieren brauch ich seine zustimmung
Ja, also hol dir die Zustimmung Python 2.6 oder zumindest 2.5 zu installieren. Zudem ja viel Code der online ist, nicht mehr mit Python 2.2 funktioniert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

danke für den tipp

aber du musst verstehen dieser typ hat nachdem das Python schon so lange dRAUf ist eigene sachen geschrieben, die ich nicht verstehe und die er nicht hergibt, und wenn er jetzt eine aktuelle version hätte würde er nun wieder was lernen, unvorstellbar!!!!!!!!!!!!! :cry:

ALSO muss ich mich mit diesem herumquälen und das problem lösen

ich brauche einen befehl der erstens ein programm straten und darauf wartet das es zu ende ist!!!!

ich weiß nur das zum Beispiel os.popen geht also die ur alten befehle

vielleicht wisst ihr was Danke
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Code: Alles auswählen

# -*- coding: cp1252 -*-
import os

if __name__ == '__main__':
    
    konsole = r'C:\WINDOWS\system32\cmd.exe /C '
    skripts = [r'D:\testscript.bat',r'D:\nochein\skript.bat']
    zeichen = '"'

    # r'irgendeinstring' macht diesen zum raw string,
    # dass wird hier benötigt, damit die >>\<< nicht
    # vom interpreter als escape zeichen erkannt
    # werden und fehler verursachen

    for skript in skripts:
        print 'Skript: "%s"' % (skript)
        s = os.popen(''.join([konsole, zeichen, skript, zeichen]))

        print '*'*50
        for line in s.readlines():
            print line.encode('UTF-8')
        print '*'*50
        
        print 'Exitstatus: ', s.close()
So müsste es gehen.
Lg, Jonas 8)
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das "(skript)" hat übrigens keine Wirkung. Ein einzelner Wert kann direkt, ohne es in ein Tupel zu packen, übergeben werden. Ein Tupel mit einem Element bekommst du mittels "(skript,)".

Sebastian
Das Leben ist wie ein Tennisball.
Benutzeravatar
jonas
User
Beiträge: 156
Registriert: Dienstag 9. September 2008, 21:03

Okäse, danke. :D
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

hallo

ich habe nun erfahren das ich " nur "ein Programm öffnen muss!

also der Befehl os.popen ist hier angebracht oder nicht?
was ich noch wissen möchte, wie sagt man das Python das er auf das gestartete Programm warten soll?

Danke für die große Mühe nir zu helfen!!
Antworten