2009-08-22 16 views
1

Disons que j'ai les fichiers a.py et b.txt dans le même répertoire. Je ne peux pas m'assurer ce répertoire est, mais je sais que b.txt sera dans le même répertoire que a.py. a.py doit accéder à b.txt, comment est-ce que je pourrais trouver le chemin vers b.txt? Quelque chose comme « ./b.txt » ne fonctionnera pas si l'utilisateur exécute le programme à partir d'un répertoire autre que celui-ci est enregistré dansPython, trouver un fichier dans le même répertoire

Répondre

4

Si vous voulez que la emplacement du script principal, même à partir du code qui peut s'exécuter dans un module importé, vous devez utiliser sys.argv[0] plutôt que __file__. (sys.argv[0] est toujours le chemin du script principal, voir http://docs.python.org/library/sys.html#sys.argv)

Si vous voulez que l'emplacement du module en cours, même si elle a été importée par un autre script, vous devez utiliser __file__ comme le dit Martin.

est ici un moyen d'utiliser sys.argv[0]:

import os, sys 
dirname, filename = os.path.split(os.path.abspath(sys.argv[0])) 
print os.path.join(dirname, "b.txt") 
4

Utilisez la variable __file__.

os.path.join(os.path.dirname(__file__), "b.txt") 
Questions connexes