[Python] als Batch-Ersatz?


Sukrim

Erfahrenes Mitglied
Nachdem ich mit Batchdateien mittlerweile relativ gut klarkomme, dachte ich mir ich könnte ja mal "eine Stufe tiefer ins System" gehen und versuchen gleich ein richtiges Programm (oder zumindest etwas wo man draufklickt und etwas tut sich automatisch... :rolleyes: ) zu schreiben.

Nun bin ich aber recht schnell mit meinem Latein am Ende, da Python zwar recht hübsch meinen Text einfärbt es mir dafür aber recht schwer fällt z.B. externe Programme aufzurufen oder einfach nur z.B. ein Eingabefeld zu erzeugen (statt dem Standardinput).

Ich stehe noch relativ am Anfang meiner Bemühungen und habe daher keine Codeschnipsel o.Ä. anzubieten - es würde mich nur sehr freuen, wenn mir jemand erklären könnte wie man Phyton z.B. als funktionsreichere Alternative zu einer Batchdatei verwendet und auf was da im Besonderen zu achten ist.
Tipps wie "Wenn du ein externes Programm verwenden willst dann kannst du einfach..." oder "Achte darauf dass du alle Variablen gleich an den Anfang/mitten in den Text schreibst" wären mir echt ne große Hilfe, da ich mir irgendwie etwas hilflos vorkomme und nicht genau weiß, wie ich das jetzt angehen soll!

Vielen Dank im Vorraus
Sukrim
 

Sukrim

Erfahrenes Mitglied
Hm, vielen Dank an Perl hat mich irgendwie nur abgeschreckt, dass viele Scripts die ich gesehen habe aus mehr %|"/\#> - Zeichen bestanden als aus Buchstaben.
Daher hatte ich gehofft dass Phyton (das mir rel. sympathisch vom "Schriftbild" erscheint) da angenehmer zu bedienen ist, es schaut auf den ersten Blick ja auch ähnlich wie Batch aus...
 
Zuletzt bearbeitet:

Enumerator

Mitglied Kamel
War eigentlich nur Spass. Auch wenn ich Python bisher kaum verwendet habe, bin ich davon überzeugt dass dein Problem damit zu lösen ist.
Die Frage ist, wie sehr du deine 'Batches' tunen willst... Perl wurde dafür erfunden, *Megabatches* zu simulieren - naja, und v.A. Informationen im Textformat zu sammeln, manipulieren, sortieren was-weis-ich.
Die vielen s/^\s+[foo]\s*[bar]\s+/nice/g sind eigendlich nur reguläre Ausdrücke. Für das was du machen willst, reicht einfachere Syntax und übersichtlicher Code wie
Code:
system 'etc/init.d/apache restart'; # unix
system 'c:/xampp/xampp_restart'; # win
Sieh's dir einfach mal an.
http://de.wikipedia.org/wiki/Perl
http://de.selfhtml.org/perl/intro.htm

Gruß
Enum

PS: was meinst du eigentlich mit 'Eingabefeld erzeugen'? ;-)
 
Zuletzt bearbeitet:

Sukrim

Erfahrenes Mitglied
Quasi die Entsprechung von
Code:
SET /p foo=
- kann aber gerne auch was hübscheres sein, sei's wx oder qt...
 

Enumerator

Mitglied Kamel
Jepp. Aber es geht noch mehr: Wenn du z.B. die Ausgabe eines Befehls in einer Variablen speichern möchtest:
Code:
$tring = qx/@ECHO CRAZY/;
Naja, wie dem auch sei. Mit Perl kannst du quasi alles machen. Nur bei grafischen Anwendungen oder Treibern etc. hört's so langsam auf. Dafür hast du mit ModPerl2 für den Apache eine Implementierung für Webapps, die PHP locker und - ein wenig Talent vorrausgesetzt - auch ASP und JSP in die Tasche steckt. Dann gibt es ja auch noch ModPerlASP.
Perl zu lernen lohnt sich in jedem Fall! Es ist eine Sprache für nahezu jede Aufgabe...

Gruß
Enum
 

Enumerator

Mitglied Kamel
Nachtrag:

Ich möchte nicht vernachlässigen, dass andere Sprachen auch ihre Vorteile haben. So gibt es z.B. auch für PHP inzischen eine Implementierung für die Kommandozeile - Beispiel:
Code:
C:\xampp\php\php -n -f D:\projekt\skript.php
Wenn Du also v.A. leistungstarken und funktionsreichen Ersatz für Batches willst, kannst du so ziemlich jede Sprache nehmen - auch Python - aber am besten die, die du schon kannst.
Wenn Du ein wenig mehr willst - siehe oben - dann empfehle ich ganz klar Perl. Es sei denn, Du möchtest richtig loslegen. Dann sollte man überlegen, ob nicht C/C++ oder C# das richtige ist. Und wenn Du mal mit deinem PC 'sprechen' möchtest, gibt es ja auch noch Assembler. :)
Zugegeben, dass sind meine persönlichen Favoriten. Wenn du andere Menchen fragst, wirst Du auch andere Antworten bekommen. Ich glaube, die meisten raten heutztage zu Java. Dazu sage ich nur: Wer keine Performance braucht, ist mit Java gut beraten. Es gibt noch unzählige andere, aber gerade Einsteiger sollten wohl mit einer gut dokumentierten Sprache beginnen, zu der sie unter Umständen auch jemanden persönlich fragen können. Und es wird wohl nur wenig Leute in deinem Bekanntenkreis geben, die dir was über die Syntax von Smalltalk sagen können - geschweige denn, bei schwierigen Problemen mit Rat und Tat zur Seite stehen.

Gruß
Enum
 

Wyatt

Erfahrenes Mitglied
Hallo!

Falls du python lernen willst, gibt es wirklich gutte eBooks kostenlos im Netz...
Das wohl bekannteste ist "Dive Into Python", welches alle nötigen Grundlagen schön erklärt.
Natürlich gibt es noch mehr freie eBooks, ein wenig googlen reicht :)

Gruß
Felix
 

Sukrim

Erfahrenes Mitglied
Hier noch eine Antwort, die mir weitergeholfen hätte:

Quelle: http://www.way2python.de/themen/kochbuch.html#anderes
Anderes Programm aus einem Pythonscript heraus aufrufen

Um aus Python heraus ein anderes Programm aufzurufen oder einen Befehl zu geben, der sonst auf der Kommandozeile eingegeben wird, kann man mit dem system - Befehl aus dem Modul os einen Textstring übergeben, der dieses Kommando beinhaltet:

import os

a = os.system('ls -l > files.txt')

Die Zuweisung des Rückgabewertes an a verhindert, das dieser Wert auf dem Bidlschirm erscheint. Die Ausgabe des Befehls 'ls -l' wird in das File 'files.txt' umgeleitet und kann z.B. dort von Python gelesen werden:

f = open('files.txt', 'r')
s = f.readlines()
for i in s:
print s
f.close()
Vielleicht hilft's jemandem, der diesen Thread mal irgendwann sucht + findet! :)

Edit:
Noch was interessantes, speziell für Windows.

"AutoIT für Python": http://pywinauto.pbwiki.com/
 
Zuletzt bearbeitet:

Neue Beiträge