Comment connaître / changer le répertoire courant dans le shell Python?

219

J'utilise Python 3.2 sur Windows 7. Lorsque j'ouvre le shell Python, comment puis-je savoir quel est le répertoire actuel et comment le changer en un autre répertoire où se trouvent mes modules?

astay13
la source
Cela a déjà été discuté [ici] [1]: stackoverflow.com/questions/431684/how-do-i-cd-in-python
mudda
4
@ astay13 - Je pense qu'Ignacio signifie que vous n'êtes pas destiné à changer de répertoire pour votre chemin de module. Vous devriez probablement vérifier la variable d'environnement PYTHONPATH.
Simon

Réponses:

299

Vous pouvez utiliser le osmodule.

>>> import os
>>> os.getcwd()
'/home/user'
>>> os.chdir("/tmp/")
>>> os.getcwd()
'/tmp'

Mais s'il s'agit de trouver d'autres modules: vous pouvez définir une variable d'environnement appelée PYTHONPATH, sous Linux serait comme

export PYTHONPATH=/path/to/my/library:$PYTHONPATH

Ensuite, l'interprète recherche également à cet endroit les importmodules ed. Je suppose que le nom serait le même sous Windows, mais je ne sais pas comment changer.

Éditer

Sous Windows:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(extrait de http://docs.python.org/using/windows.html )

modifier 2

... et encore mieux: utilisez virtualenvet virtualenv_wrapper, cela vous permettra de créer un environnement de développement où vous pourrez ajouter des chemins de modules comme bon vous semble (add2virtualenv ) sans polluer votre installation ou environnement de travail "normal".

http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html

wal-o-mat
la source
vous avez raison de modifier votre question pour ajouter la suggestion PYTHONPATH, mais notez que l'OP spécifie Windows ...
simon
Et quel est le problème avec PYTHONPATH sous Windows? Mais j'ai fixé ma réponse.
wal-o-mat
Dois-je définir PYTHONPATH dans la ligne de commande Windows ou dans le shell Python?
astay13
2
@ astray13: Vous avez également la possibilité d'ignorer la variable d'environnement et de l'ajouter à l' sys.pathintérieur de votre script.
Steven Rumbalski
3
@ astay13: ne définissez pas PYTHONPATHglobalement si vous avez plus d'un Python installé (ou si des programmes installés qui regroupent Python avec eux - en d'autres termes, vous ne le saurez jamais): cela peut interrompre votre installation de manière mystérieuse
jfs
18

tu veux

import os
os.getcwd()
os.chdir('..')
Simon
la source
1
os.chdir ('C: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL lors de l'analyse littérale de la chaîne
AAI
1
@ Quoi qu'il en soit, vous devez doubler les barres obliques inverses si vous les utilisez dans une chaîne Python régulière (non brute). Python vous permet également d'utiliser des barres obliques à la place. Ainsi, soit os.chdir('C:/Users/Ajeya/Documents'), soit os.chdir('C:\\Users\\Ajeya\\Documents'), ou os.chdir(r'C:\Users\Ajeya\Documents').
Charles Duffy
Il serait bon de noter que vous appelez os.getcwd()uniquement à des fins de débogage afin que nous puissions voir quel est le répertoire de travail avant de le modifier. Le code pour changer réellement cwdest justeos.chdir('..')
Cure
15
>>> import os
>>> os.system('cd c:\mydir')

En fait, os.system()peut exécuter n'importe quelle commande que l'invite de commande Windows peut exécuter, pas seulement changer dir.

shankar_pratap
la source
Fichier "<stdin>", ligne 1 os.system ('cd c: \ Users \ Ajeya \ Documents \') ^ SyntaxError: EOL lors de l'analyse littérale des chaînes
AAI
6

Changer le répertoire courant n'est pas la façon de gérer la recherche de modules en Python.

Voir plutôt les documents pour le chemin de recherche de module pour savoir comment Python trouve le module à importer.

Voici un extrait pertinent de la section Modules standard :

La variable sys.path est une liste de chaînes qui détermine le chemin de recherche de l'interpréteur pour les modules. Il est initialisé sur un chemin par défaut tiré de la variable d'environnement PYTHONPATH, ou d'une valeur par défaut intégrée si PYTHONPATH n'est pas défini. Vous pouvez le modifier en utilisant des opérations de liste standard:

>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')

Pour répondre à votre question d'origine sur l'obtention et la configuration du répertoire actuel:

>>> help(os.getcwd)

getcwd(...)
    getcwd() -> path

    Return a string representing the current working directory.

>>> help(os.chdir)

chdir(...)
    chdir(path)

    Change the current working directory to the specified path.
Steven Rumbalski
la source
Cette réponse est or .. Ajoutez simplement votre répertoire de projet comme ceci:import sys sys.path.append('/home/g/PycharmProjects/your_project/')
gies0r
6

Le moyen le plus simple de changer le répertoire de travail actuel en python est d'utiliser le package 'os'. Ci-dessous, un exemple pour ordinateur Windows:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")
sambeet
la source
utilisation de "\\" et clarification sur l'ordinateur Windows. Mais je suis d'accord que la réponse acceptée est plus descriptive.
sambeet
4

Si vous import ospouvez utiliser os.getcwdpour obtenir le répertoire de travail actuel et que vous pouvez utiliser os.chdirpour modifier votre répertoire

déontologue
la source
0

Vous pouvez essayer ceci:

import os

current_dir = os.path.dirname(os.path.abspath(__file__))   # Can also use os.getcwd()
print(current_dir)                                         # prints(say)- D:\abc\def\ghi\jkl\mno"
new_dir = os.chdir('..\\..\\..\\')                         
print(new_dir)                                             # prints "D:\abc\def\ghi"

Aditya NS
la source