Hallo
habe zu Übungszwecken und um meinen Python-Horizont zu
erweitern ein Programm zum konvertieren von Videos geschrieben,
welches meiner Tochter (und vielleicht auch anderen) als
Nautilus_Script dienen soll.Da ich noch sehr unerfahren bin,würde ich
mich über den ein oder anderen Kommentar der erfahreneren
Pythonisten freuen.
Hier der Code http://paste.pocoo.org/show/97020/
Gruß....busfahrer
Nautilus_Video_Converter
@busfahrer: Die `Converter`-Klasse ist keine echte Klasse sondern einfach nur ein Behälter für Funktionen und damit ist die Klasse überflüssig.
Die Funktionen darin greifen auf `IN_DATEI` zu, statt den Dateinamen als Argument übergeben zu bekommen. Ausserdem sieht der Code von all den Funktionen sehr ähnlich aus. Da lässt sich bestimmt noch etwas in eine gemeinsam benutzte Funktion herausziehen.
``IN_DATEI[:-3] + "avi"`` ist nicht robust. Dateiendungen dürfen nicht nur drei Zeichen lang sein. Die Endung `.mpeg` ist zum Beispiel auch in freier Wildbahn anzutreffen. Schau Dir mal `os.path.splitext()` an.
`self.c` in der `Gui` ist ein nicht besonders aussagekräftiger Name. Wäre auch überhaupt nicht nötig, wenn die Funktionen nicht in der `Converter`-Klasse stecken würden.
Das Argument `master` wird in `Gui.__init__()` nicht verwendet, sollte es aber zum Beispiel bei den `Frame`\s, die Du erzeugst.
`Gui.ende()` greift auf das global definierte `root` zu. `hinweis()` ist keine Methode.
Das ``if``/``elif``-Konstrukt in `Gui.convert()` enthält in den einzelnen Zweigen fast identischen Quelltext. Das sollte man herausziehen und vielleicht ein Dictionary das Formate auf Funktionen abbildet, verwenden.
Der Quelltext ganz am Ende sollte in einer `main()`-Funktion verschwinden. Dann wäre man gar nicht erst in Versuchung gekommen in `Gui.ende()` auf `root` zuzugreifen.
"Whitespace" ist inkonstent eingesetzt. Mal sind Leerzeilen von Klassen- und Funktionsdefinitionen und mal nicht; mal ist ein Leerzeichen nach Kommata und mal nicht.
Die Funktionen darin greifen auf `IN_DATEI` zu, statt den Dateinamen als Argument übergeben zu bekommen. Ausserdem sieht der Code von all den Funktionen sehr ähnlich aus. Da lässt sich bestimmt noch etwas in eine gemeinsam benutzte Funktion herausziehen.
``IN_DATEI[:-3] + "avi"`` ist nicht robust. Dateiendungen dürfen nicht nur drei Zeichen lang sein. Die Endung `.mpeg` ist zum Beispiel auch in freier Wildbahn anzutreffen. Schau Dir mal `os.path.splitext()` an.
`self.c` in der `Gui` ist ein nicht besonders aussagekräftiger Name. Wäre auch überhaupt nicht nötig, wenn die Funktionen nicht in der `Converter`-Klasse stecken würden.
Das Argument `master` wird in `Gui.__init__()` nicht verwendet, sollte es aber zum Beispiel bei den `Frame`\s, die Du erzeugst.
`Gui.ende()` greift auf das global definierte `root` zu. `hinweis()` ist keine Methode.
Das ``if``/``elif``-Konstrukt in `Gui.convert()` enthält in den einzelnen Zweigen fast identischen Quelltext. Das sollte man herausziehen und vielleicht ein Dictionary das Formate auf Funktionen abbildet, verwenden.
Der Quelltext ganz am Ende sollte in einer `main()`-Funktion verschwinden. Dann wäre man gar nicht erst in Versuchung gekommen in `Gui.ende()` auf `root` zuzugreifen.
"Whitespace" ist inkonstent eingesetzt. Mal sind Leerzeilen von Klassen- und Funktionsdefinitionen und mal nicht; mal ist ein Leerzeichen nach Kommata und mal nicht.
@BlackJack
vielen Dank für deine ernüchternden Worte.
Mir raucht jetzt schon der Schädel
Mir wird mal wieder klar das ich viele Dinge offensichtlich
noch nicht wirklich verstehe.
Ich werd mal sehen was ich von den Punkten die du aufgezählt
hast denn umgesetzt bekomme.
Gruß...busfahrer
vielen Dank für deine ernüchternden Worte.
Mir raucht jetzt schon der Schädel

Mir wird mal wieder klar das ich viele Dinge offensichtlich
noch nicht wirklich verstehe.
Ich werd mal sehen was ich von den Punkten die du aufgezählt
hast denn umgesetzt bekomme.
Gruß...busfahrer
Alles wird gut ;-)
Das ist ja nett gesagt,aber mein Wissen und somit meine MöglichkeitenFür ein Nautilus Script hätte ich definitiv GTK und nicht TK verwendet
sind doch noch sehr begrenzt.Wenn ich mich jetzt auch noch mit einer neuen GUI beschäftigen muß,brennen mir glaube ich die Sicherungen
durch

Gruß...busfahrer
Alles wird gut ;-)
@busfahrer: Also, ich find' Dein Skript für den Anfang nicht schlecht. Es gibt da schon viele Dinge, die Du richtig machst. Der Rest kommt bestimmt bald auch noch.
Gruß
Gruß
Hallo Pythonisten
Habe das Programm nun mal überarbeitet(verbessert?),
unter berücksichtigung der Hinweise von @BlackJack.
Wäre schön wenn noch mal jemand drüber schaut,ob sich
meine Bemühungen denn halbwegs gelohnt haben.
Hier der überarbeitete Code http://paste.pocoo.org/show/97186/
Mit rauchendem Kopf
Gruß...busfahrer

Habe das Programm nun mal überarbeitet(verbessert?),
unter berücksichtigung der Hinweise von @BlackJack.
Wäre schön wenn noch mal jemand drüber schaut,ob sich
meine Bemühungen denn halbwegs gelohnt haben.
Hier der überarbeitete Code http://paste.pocoo.org/show/97186/
Mit rauchendem Kopf
Gruß...busfahrer
Alles wird gut ;-)