Batch Dateien ausführen
-
- User
- Beiträge: 10
- Registriert: Dienstag 25. Januar 2011, 15:37
Hallo allerseits, ich habe ein programm geschrieben,dass eine batch datei schreibt,nun möchte ich diese auch ausführen lassen.Hat jemand von euch eine idee für so einen befehl?????
Wie wäre es mit subprocess?
Nebenbei: Weshalb schreibst du Batchdateien die du mit Python ausführst? Wäre es nicht einfacher direkt ein Pythonprogramm zu schreiben?
Nebenbei: Weshalb schreibst du Batchdateien die du mit Python ausführst? Wäre es nicht einfacher direkt ein Pythonprogramm zu schreiben?
Code: Alles auswählen
import subprocess
subprocess.Popen(parameter_string, executable=programm_pfad)
@syntor es gibt bestimmte dinge die man einfacher in eine Batch-Datei bekommt als in Python, bzw. braucht man eine Lösung ohne Python.syntor hat geschrieben:Wie wäre es mit subprocess?
Nebenbei: Weshalb schreibst du Batchdateien die du mit Python ausführst? Wäre es nicht einfacher direkt ein Pythonprogramm zu schreiben?
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Wer Rechtschreibfehler findet darf sie behalten.
Und weil man eine Lösung ohne Python braucht, möchte man das Shell-Skript gerne mit Python starten. Ja, das leuchtet ein.Py-Prog hat geschrieben:@syntor es gibt bestimmte dinge die man einfacher in eine Batch-Datei bekommt als in Python, bzw. braucht man eine Lösung ohne Python.
Ok, daran hab ich nicht gedacht,
aber das ist doch eigentlich egal. Ghillie_Suit hat ja gefragt wie er das ausführen kann.

Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Wer Rechtschreibfehler findet darf sie behalten.
subprocess ist mal wieder Overkill.
genügt. Wenn Du die Ausgabe abfangen willst:
subprocess ist dann sinnvoll, wenn Du ein anderes Programm über längere Zeit steuern willst (str.).
Code: Alles auswählen
os.system('yourcommand')
Code: Alles auswählen
os.popen('yourcommand')
@problembär ich glaube er hat die Datei schon abgespeichert, und die wieder einzulesen und dann mit os.system auszuführen ist nicht gerade sinnvoll.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Wer Rechtschreibfehler findet darf sie behalten.
Denke nicht, daß "os.system()" was einliest. Schätze mal, es ist in CPython einfach ein Zugriff auf die C-Funktion "system();" (dazu "man system" unter Linux).
Gruß
Gruß
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Andersrum. Die beiden spawnen zwangsweise eine Shell. subprocess tut das nicht. Siehe auch http://docs.python.org/library/subproce ... -os-system und http://docs.python.org/library/subproce ... -os-popen3problembär hat geschrieben:subprocess ist mal wieder Overkill.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Ich sehe das mehr von der Programmierer-Seite, der bei "os.system()" sofort sieht, was gemeint ist, ohne sich durch Modul- und Klassendokumentationen zu wühlen.cofi hat geschrieben:Andersrum. Die beiden spawnen zwangsweise eine Shell. subprocess tut das nicht. Siehe auch http://docs.python.org/library/subproce ... -os-system und http://docs.python.org/library/subproce ... -os-popen3problembär hat geschrieben:subprocess ist mal wieder Overkill.
Die Subshell sollte bei einfachen Programmaufrufen nur selten stören. Wenn doch, gäbe es noch diese "os.spawnl()"-Funktionen usw., aber in dem Fall würde ich auch das subprocess-Modul nehmen.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Alleine das mutet komisch an! Du generierst also aus Python heraus eine Batch-Datei... eher ungewöhnliches Vorgehen. Wobei ich mich dann schon besonders frage, wieso man die aus Python heraus dann starten will. Bei Code-Generatoren denkt man ja eher in die Richtung, dass die Zielsprache / Plattform da ausschlaggebend ist. Und dann würde man doch die Batchdatei eher direkt starten, oder?Ghillie_Suit hat geschrieben:Hallo allerseits, ich habe ein programm geschrieben,dass eine batch datei schreibt,...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Huch, jetzt erzähl doch nicht, dass das bei ``subprocess.Popen`` nicht klar ist?! Ein "Programmierer" der ``os.system`` versteht aber ``subprocess.Popen`` oder ``subprocess.call`` nicht sollte sich vielleicht mit was anderen beschäftigen. Gartenbau zum Beispiel.problembär hat geschrieben:Ich sehe das mehr von der Programmierer-Seite, der bei "os.system()" sofort sieht, was gemeint ist, ohne sich durch Modul- und Klassendokumentationen zu wühlen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Interessante AssoziationLeonidas hat geschrieben:Gartenbau zum Beispiel.

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Damit meinte ich vor allem Leute, die von C und Perl kommen. In beiden gibt es die "system();"-Funktion, aber die 'subprocess.Popen'-Klasse dürfte (soweit ich weiß) eine Python-Spezialität sein. (Klassen überhaupt sind dort weniger gebräuchlich.)Leonidas hat geschrieben:Huch, jetzt erzähl doch nicht, dass das bei ``subprocess.Popen`` nicht klar ist?! Ein "Programmierer" der ``os.system`` versteht aber ``subprocess.Popen`` oder ``subprocess.call`` nicht sollte sich vielleicht mit was anderen beschäftigen.problembär hat geschrieben:Ich sehe das mehr von der Programmierer-Seite, der bei "os.system()" sofort sieht, was gemeint ist, ohne sich durch Modul- und Klassendokumentationen zu wühlen.
Gartenbau ist eine gute Sache.

Sollte ich jetzt besser auchproblembär hat geschrieben:Damit meinte ich vor allem Leute, die von C und Perl kommen. In beiden gibt es die "system();"-Funktion, aber die 'subprocess.Popen'-Klasse dürfte (soweit ich weiß) eine Python-Spezialität sein. (Klassen überhaupt sind dort weniger gebräuchlich.)Leonidas hat geschrieben:Huch, jetzt erzähl doch nicht, dass das bei ``subprocess.Popen`` nicht klar ist?! Ein "Programmierer" der ``os.system`` versteht aber ``subprocess.Popen`` oder ``subprocess.call`` nicht sollte sich vielleicht mit was anderen beschäftigen.problembär hat geschrieben:Ich sehe das mehr von der Programmierer-Seite, der bei "os.system()" sofort sieht, was gemeint ist, ohne sich durch Modul- und Klassendokumentationen zu wühlen.
Gartenbau ist eine gute Sache.
Code: Alles auswählen
for i in range(len(liste)):
liste[i] ...
Das Leben ist wie ein Tennisball.
LOL: Tatsächlich verwende ich das genau so. Aber jeder, wie er mag (wenn's keine beruflichen Zwänge usw. dabei gibt), oder?EyDu hat geschrieben:Sollte ich jetzt besser auchverwenden, damit es alle verstehen?Code: Alles auswählen
for i in range(len(liste)): liste[i] ...
Indem Fall geht es noch (vorrausgesetzt es wird nicht wiederholt sobald du drauf angesprochen wirst) aber bei os.system ist es einfach nur eine Dummheit die durch Unwissenheit nicht besser wird.problembär hat geschrieben:LOL: Tatsächlich verwende ich das genau so. Aber jeder, wie er mag (wenn's keine beruflichen Zwänge usw. dabei gibt), oder?
Davon unabhängig ist es der beste Weg sicherzustellen dass der nächste Patch/Pull Request noch nichtmal angesehen wird wenn man einen solchen irgendwem schickt.
Wenn man vor hat ernsthaft Hilfe zu bekommen für nicht-triviale Probleme oder bei irgendeinem Projekt mitarbeiten möchte welches von Leuten maintained wird die tatsächlich erwähenswert mehr Ahnung haben sollte man sich also angewöhnen Dokumentationen komplett durchzulesen und einen brauchbaren Stil entwickeln.
Wenn jemand eine grausame Schrift hat schaut man sich seine Texte auch nicht an, dass ist beim Programmieren nicht viel anders. Desweiteren ist es durchaus eine Frage des Respekts ob man jemandem schlechten Code abliefert oder nicht, vorrausgesetzt man weiß es besser oder zeigt zumindest den Willen sich zu bessern.
@problembär: Von "system()" wird auch in C allgemein abgeraten.
Natürlich, jeder nach seinem Belieben, diese Feststellung ist unbestritten, doch jeder wird sich zu dem Belieben des Anderen seinen Teil denken. Allzu abweichende Ansichten, zumal wenn sie offensichtlich problematische Lösungen verteidigen, sind folglich nicht geeignet, das Bild eines guten und erfahrenen Programmierers zu vermitteln.
Natürlich, jeder nach seinem Belieben, diese Feststellung ist unbestritten, doch jeder wird sich zu dem Belieben des Anderen seinen Teil denken. Allzu abweichende Ansichten, zumal wenn sie offensichtlich problematische Lösungen verteidigen, sind folglich nicht geeignet, das Bild eines guten und erfahrenen Programmierers zu vermitteln.