De manière générale, en Python, on se réfère souvent à l'axiome EAFP : Easier to Ask Forgiveness than Permission (https://docs.python.org/2.7/glossary.html#term-eafp).
Dans ton cas, ça consisterait à partir du principe que les paramètres qu'on t'a passés sont bons et à juste râler si ça n'est pas le cas ; autrement dit à simplement essayer d'ouvrir tes binaires dans un <code>try</code> et à lever une exception si l'opération échoue. Ton code en serait grandement simplifié.

Suggestion : on pourrait de surcroit imaginer un contrôle d'intégrité des binaires dans la foulée.
Typiquement, tu calcules au préalable le _checksum_ de chacun des binaires, et tu le vérifies là.