Python Skript in Kontext-Menü des Windows-Explorer einbinden

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
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Hallo zusammen,
ich habe eine Skript geschrieben, welches beim Aufruf eine csv-Datei übergeben bekommt, diese ausliest, die Daten in eine andere Anordnung bringt und diese in einer umbenannten csv-Datei wieder ausgibt. Das Skript funktioniert soweit.

Mein Problem ist nun, dass es für die Anwender so einfach wie möglich gehalten werden muss, dieses Skript auszuführen. Meine erste Idee war es das Skript mit py2exe in eine ausführbare Datei umzuwandeln und dann über das Kontexmenü des Explorers einen Menüpunkt zu erzeugen. So muss man nur auf die csv-Datei einen Rechtsklick durchführen und dann den Menüpunkt auswählen. Die ausführbare Datei tut das, was sie soll, wenn ich sie in der Windows-Shell ausführe.

Ich habe im Netz verschiedene Anleitungen, wo man in den Tiefen der Registry diesen Menüpunkt anlegen kann, gefunden, jedoch führt keine zum Erfolg. Der Menüpunkt erscheint zwar so wie gewünscht, jedoch öffnet sich bei der Anwahl des Menüpunktes nur kurz das Konsolenfenster und sonst passiert nichts, es wird also keine Datei erstellt.
Auch wenn ich die Ausführung des Skripts mit sleep künstlich hinauszögere öffnet sich das Fenster nur für den Bruchteil einer Sekunde.
Hat jemand eine Idee, woran das liegen könnte oder eine andere Idee, wie man möglichst einfach den Anwender das Skript auf eine gegebene csv-Datei ausführen lassen kann?
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

dein Pythonscript wirft irgendeine Exception und darum wird dein sleep auch nicht ausgeführt. Du kannst für Testzweche (und nur für Testzwecke) ein try-except Block um das ganze Skript machen und dann im except Teil den Fehler ausgeben lassen und zusätzlich noch die Pause einbauen.

Code: Alles auswählen

try:
    a[3]
except Exception as inst:
    print type(inst)
    print inst
Sonst kannst du auch den Quellcode zeigen, damit der Fehler gefunden werden kann.
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Jupp, danke, das war's! Bei der Übergabe der Datei als Parameter übergibt Windows den kompletten Pfad. Da die Ausgabedatei vom Namen der übergebenen Datei abgeleitet wird kam es hier zu einem Fehler.
Danke nochmal, jetzt läuft's so wie ich mir das vorstelle.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Das muss ja auch so sein, da das Skript keinen "Kontext" bekommt wie wenn es auf der Kommandozeile ausgeführt wird. :)
EmaNymton
User
Beiträge: 174
Registriert: Sonntag 30. Mai 2010, 14:07

Es bekommt schon "Kontext" übergeben, z.B. mit C:\programm.exe %1. Jedoch wird mit "%1" der komplette Pfad übergeben, was vorher halt auf der Kommandozeile nicht der Fall war.
Antworten