.bat mit Listeninhalt ausführen

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Wie ich ja bereits (mehrfach) schrieb, musst Du den Aufruf erst einmal in der Kommandozeile lösen! Das hat mit Python ja nichts aber auch gar nichts zu tun. Wenn Du das kapiert hast, dann musst Du Dir überlegen, wie Du das in Python formulierst.

Ich kenne das Programm ja nicht, aber offensichtlich will es *zwei* Parameter zwingend haben; einmal einen Pfad und einmal einen Dateinamen. Was es damit auf sich hat, kannst nur Du uns mitteilen oder herausfinden ;-) Im Moment übergibst Du nur *einen* Parameter.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
OttoPython
User
Beiträge: 47
Registriert: Montag 23. April 2012, 14:14

meinst du was die exe benötigt?

die exe braucht nun das File was es in der Liste von data zugewiesen bekommt. und dieses File liegt in einem anderen Ordner.
Den ordner hab ich unter Path deklariert.
ist die angabe so richtig?oder muss erst data und dann path? spielt das überhaupt eine rolle? Oder ist diese zuweisung von vornherein verkehrt?

Code: Alles auswählen

for data in filenames:
	subprocess.call(["D:\\Test\test.exe", path, data])
"Im Burnout steckt viel Arbeit drin" -Lysander
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

OttoPython hat geschrieben:meinst du was die exe benötigt?
ja!
OttoPython hat geschrieben: die exe braucht nun das File was es in der Liste von data zugewiesen bekommt.
Offenbar braucht das Programm eben mehr, nämlich *zwei* Parameter! Wie ich nun schon gefühlte zig tausend Mal schrieb, musst Du doch erst einmal wissen, wie man das Programm *ohne* Python korrekt aufruft. Danach kannst Du dann überlegen, wie Du welche Info mittels Python und `subprocess` übergibst.

Dieses `path` sehe ich jetzt zum ersten Mal - wenn das fix ist, klappt es ja nun vielleicht auch.

Du solltest Pfadangaben immer als Raw-String angeben:

Code: Alles auswählen

r"D:\\..."
Damit vermeidest Du Probleme durch Escape-Sequenzen des Backslashs.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
OttoPython
User
Beiträge: 47
Registriert: Montag 23. April 2012, 14:14

ja gut dass hatte ich vor deinem whhooooza geschrieben, dass die exe auf ein file zugreift, dass in einem andren Verzeichnis liegt.

Missverständnis beiderseits. Tut mir leid. Aber ich habe jetz bemerkt, dass mir ursprüunglich nur die Eckklammern im python skrippt gefehlt haben. Da ich mir gedacht hatte , dass mein ansatz dabei verkehrt sei.
Nun funktioniert es wie es soll. Vielen Dank dafür und für deine Geduld mit mir :D

Wie kann ich mir eine Rückgabe geben lassen, welches File gerade bearbeitet wird? stdout= ?? welchen Befehl oder gibt es eine andere möglichkeit?
"Im Burnout steckt viel Arbeit drin" -Lysander
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

"Nur die Eckklammern" klingt banal - Dir ist hoffentlich klar, was sie bedeuten und dass das semantisch einen *großen* Unterschied macht?

Du müsstest nicht `subprocess.call`, sondern eine andere Funktion benutzen; etwa `subprocess.check_output`.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten