Nun, am einfachsten und besten wäre es wohl, einfach dranzuschreiben, dass man gefälligst ein Python Script übergeben soll.
Man kann - und muss - nicht jeden möglichen Fehler des Benutzers abfangen. Wenn du da ein Python-Script erwartet, dann hat der User dir eins zu geben. Und wenn die bei ihm eben .python.script heißen, ist das für dich auch okay.
Wenn der Depp allerdings daherkommt und dir ne Worddatei gibt, dann wirst du das merken, wenn du versuchst irgendwas damit zu machen.
Die Exception kannst du dann abfangen und dem Deppenuser mitteilen, er möge doch ein Python Script übergeben.
Man muss nicht jeden Mist im vorraus prüfen, Exception bieten einem da eine viel schönere Möglichkeit.
Eine gesunde Portion Arroganz kann man sich als Softwareentwickler schon zulegen. Wenn man ein Modul schreibt und dieses Modul funktioniert nur, wenn man ein "foo" übergibt, dann geht es eben nur damit. Wenn man ein "bar" bekommt, hat es keinen Sinn daraus noch etwas sinnvolles basteln zu wollen. Sofern man die Schnittstellen ordentlich deklariert und dokumentiert ist sowas vollständig in Ordnung.
Das ganze nennt sich übrigens Post-/Precondition. Man definiert was vorher gegen sein muss und sagt was hinterher rauskommt, das garantiert man dann allerdings. Ala: "Gib mir Steine und Zement und ich bau dir ein Haus das nicht umfällt", wenn man dann Styrophor und Pattex bekommt...nunja, was hausähnliches kommt raus