python os.chemin d'accès.realpath ne fonctionne pas correctement
J'ai code suivant:
os.chdir(os.path.dirname(os.path.realpath(__file__)) + "/../test")
path.append(os.getcwd())
os.chdir(os.path.dirname(os.path.realpath(__file__)))
Qui devrait ajouter /../test
python chemin, et il le fait, et que tout fonctionne normalement par la suite sur eclipse en utilisant PyDev.
Mais quand je le déjeuner même application à partir de la console de deuxième os.chdir fait quelque chose de mal, en fait quelque chose de mal est dans os.path.realpath(__file__)
cus il retourne ../test/myFile.py
en place de ../originalFolder/myFile.py
. Bien sûr, je peux résoudre ce problème en utilisant fixe os.chdir("../originalFolder")
mais cela semble un peu de mal pour moi, mais ceci fonctionne sur les deux, eclipse et console.
P. S. je suis en utilisant os.getcwd()
en fait parce que je veux être sûr qu'il n'a pas un tel dossier, autrement je ne voudrais pas avoir à changer de répertoire à tous les
Si il ya quelque chose de mal avec mon approche ou j'ai loupé quelque chose? ou quoi? 🙂
Merci d'avance! 🙂
OriginalL'auteur jj. | 2012-03-27
Vous devez vous connecter pour publier un commentaire.
Prendre un coup d'oeil ce qui est de la valeur de
__file__
. Il ne contient pas de chemin absolu de votre script, c'est une valeur à partir de la ligne de commande, de sorte qu'il peut être quelque chose comme "./myFile.py" ou "myFile.py". Aussi, la fonction realpath() ne fait pas de chemin d'accès absolu, de sorte que la fonction realpath("myFile.py") appelée dans les différentes répertoire sera encore de retour "myFile.py".Je pense que vous devriez faire ssomething comme ceci:
Sur mon ordinateur (Windows) j'ai comme résultat:
Remarque: Si vous vous souciez de compatibilité (vous n'aimez pas étrange chemin des erreurs de), vous devez utiliser os.chemin d'accès.join() chaque fois que vous combinez les chemins d'accès.
Remarque: je sais que ma solution est simple (n'oubliez pas de chemin d'accès absolu), mais parfois la plus simple des solutions sont les meilleures.
realpath()
fait le chemin absoluIciest un bon résumé de la commande qui fait quoi.
Bien que ce n'est pas la question la plus populaire sur ce topi, cette réponse est la plus correcte. Merci!!!!
OriginalL'auteur Tupteq