ich möchte ein Skript schreiben, dass einen Befehl erzeugt, der in der Windows-Shell ein ausführbares Programm (*.exe) mit einer Eingabedatei aufruft.
Dieser Befehl hat dann z.B. die Form: 'V:\Programme\Programm.exe Eingabedatei.dat'
Der Anwender soll diesen Befehl bequem über ein Dialogfenster erzeugen.
Bisher habe ich einen Ansatz, doch stehe ich nun bei Problemen, die ich nicht lösen kann.
Der Ansatz beinhaltet immerhin ein Dialogfenster, dass einen Button enthält, der auf "Knopfdruck" mittels der tkFileDialog.askopenfilename()-Methode ein Dateiauswahlfenster öffnet, indem die Programm.exe-Datei auswählbar ist.
Ansatz:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import Tkinter
import tkFileDialog
filename=''
root = Tkinter.Tk()
def open_file_dialog():
global filename
filename = tkFileDialog.askopenfilename(filetypes=
[('executable files', '.exe'), ('all files', '.*')], initialdir=['V:\\User\\bin\\Programme\\TXpert']) #Beachte Beispiel-initialdir
print filename
Tkinter.Button(root, text='Wähle tw0070-Version', command=lambda:
open_file_dialog()).pack()
root.mainloop()
# http://www.velocityreviews.com/forums/t689042-tkinter-get-filename-of-askopenfilename.html
#----> google keyword: tkinter button askopenfilename
Der 1. Teil des Befehls ist also schon fertig.
Nun soll noch ein zweiter Button entstehen, mit dem auf "Knopfdruck" der Eingabedatei-Name einer Variablen zu gewiesen wird.
Das Problem sehe ich darin, dass die globale Variable Filename außerhalb der Funktion 'open_file_dialog():', nicht den gewünschten Wert (Pfad+Programm-Name) hat, sondern "leer ist". Dadurch kann man außerhalb der Funktion offenbar nicht mit 'filename' arbeiten.
'filename' ist vom Typ unicode und soll dann später um den Eingabedatei-Namen (wäre dann wohl auch unicode) ergänzt werden (etwa: filename = filename + Eingabdateiname).
Zum Schluß würde die Variable 'filename' (= vollständiger Windows-Shell-Befehl) über den Befehl 'subprocess.Popen()' aus der 'subprocess'-Bibliothek ausgeführt werden.
Am Ende nun meine Fragen bzw.

1. Sind meine Gedanken zu Vervollständigung des Skripts nachvollzieh- und umsetzbar?
2. Fällt jmd. ein, wie dass Skript in Python ergänzt werden kann, damit der Befehl in der Windows-Shell ausgeführt wird?
3. Gibt es andere vielversprechende Ansätze, die den vorgesehenen Zweck ggf. einfacher realisieren lassen?