2009-02-04 9 views
8

Comment changer de répertoire dans le répertoire avec mon script python? Jusqu'à présent, j'ai compris que je devrais utiliser os.chdir et sys.argv[0]. Je suis sûr qu'il y a un meilleur moyen d'écrire ma propre fonction pour analyser argv [0].Changer le répertoire dans le répertoire d'un script Python

+0

Vous pouvez directement copier-coller ceci: 'import os; os.chdir (os.path.dirname (__ fichier __)) ' – Basj

Répondre

16
os.chdir(os.path.dirname(__file__)) 
+0

pour quelque raison que ce soit __file__ était C: \ dev \ Python25 \ Lib \ idlelib donc un remplacement rapide par argv [0] l'a résolu. +1 et cocher la case –

+1

En outre, en fonction de la plate-forme, vous pouvez utiliser 'os.path.abspath' sur le résultat de' os.path.dirname' pour vous assurer que les liens symboliques ou toute autre redirection du système de fichiers sont développés correctement. –

5

Parfois __file__ n'est pas défini, dans ce cas, vous pouvez essayer sys.path[0]

+1

@Miki - quand est-ce que __file__ n'est pas défini? –

+3

@RobBednark: 'python3.3 -c" print (__ fichier __) "' –

+1

@JanusTroelsen: true pour Python 2.7. – George

4

os.chdir(os.path.dirname(os.path.abspath(__file__))) devrait le faire.

os.chdir(os.path.dirname(__file__)) ne fonctionnerait pas si le script est exécuté à partir du répertoire dans lequel il est présent.

+0

Cela fonctionne également pour écrire 'os.chdir (os.path.dirname (__ file__) ou '.')'. Le problème dans le répertoire survient lorsque '__file__' n'a pas le préfixe'./'. 'os.path.dirname' renvoie une chaîne vide dans ce cas. – George

+0

Belle observation @George :) – iamas

0

sur Windows OS, si vous appelez quelque chose comme python somefile.py ce os.chdir (os.path.dirname (__ FILE__)) lancera une WindowsError. Mais cela devrait fonctionner dans tous les cas:

import os 
absFilePath = os.path.abspath(__file__) 
os.chdir(os.path.dirname(absFilePath)) 
Questions connexes