En Perl, le module FindBin
est utilisé pour localiser le répertoire du script original. Quelle est la manière canonique d'obtenir ce répertoire en Python?Quel est l'équivalent Python de FindBin de Perl?
Certaines des options que j'ai vu:
os.path.dirname(os.path.realpath(sys.argv[0]))
os.path.abspath(os.path.dirname(sys.argv[0]))
os.path.abspath(os.path.dirname(__file__))
Ne pas utiliser FindBin: http://www.perlmonks.org/?node_id=41213 – runrig
La plainte PerlMonks est vieux et obsolète. FindBin a été créé car, avant l'avènement de/proc/PID/exe, des heuristiques étaient nécessaires pour trouver le chemin de l'exécutable actuel. Le plaignant avait une heuristique, qui souvent mais ne fonctionnait pas toujours. Vers la fin, il a été rapporté que les heuristiques de FindBin avaient été améliorées. Maintenant, il utilise/proc/PID/exe lorsqu'il est disponible, et sur de tels systèmes, il est plus fiable que la plainte dans cette discussion perlmonks. –
Permettez-moi d'ajouter à mes trois années + vieux commentaires sur FindBin encore être utile - utile assez que Perl FindBin est maintenant dans la distribution perl de base: à mon humble avis encore plus utile que FindBin est Dir :: Self CPAN, ce qui crée une __DIR__ pseudo-constante se développe dans le répertoire dans lequel se trouve votre fichier source (absolu). FindBin ne fonctionne que pour l'exécutable; __DIR__ fonctionne pour n'importe quel module. –