web-dev-qa-db-fra.com

Monter d'un répertoire dans Python

Existe-t-il un moyen simple de remonter d'un répertoire dans python en utilisant une seule ligne de code? Quelque chose de similaire à cd .. en ligne de commande

28
user2165857
>>> import os
>>> print os.path.abspath(os.curdir)
C:\Python27
>>> os.chdir("..")
>>> print os.path.abspath(os.curdir)
C:\
48
Ryan G

Utilisez le module os:

import os
os.chdir('..')

devrait marcher

27
Steve Allison

De toute évidence, os.chdir ('..') est la bonne réponse ici. Mais juste pour info, si à l'avenir vous rencontrez une situation où vous devez manipuler en profondeur les répertoires et les chemins, voici un excellent package (Unipath) qui vous permet de les traiter comme Python objets: - https://pypi.python.org/pypi/Unipath

afin que vous puissiez faire quelque chose comme ça:

>>> from unipath import Path
>>> p = Path("/usr/lib/python2.5/gopherlib.py")
>>> p.parent
Path("/usr/lib/python2.5")
>>> p.name
Path("gopherlib.py")
>>> p.ext
'.py'
13
Conan Li

Eh bien .. je ne suis pas sûr de savoir comment portable os.chdir ('..') serait réellement. Sous Unix, ce sont de vrais noms de fichiers. Je préférerais ce qui suit:

import os
os.chdir(os.path.dirname(os.getcwd()))

Cela obtient le répertoire de travail actuel, monte d'un répertoire, puis passe à ce répertoire.

11
aychedee

Dans Python 3.4 pathlib a été introduit:

>>> from pathlib import Path
>>> p = Path('/etc/usr/lib')
>>> p
PosixPath('/etc/usr/lib')
>>> p.parent
PosixPath('/etc/usr')

Il est également livré avec de nombreuses autres fonctionnalités utiles, par exemple pour joindre des chemins à l'aide de barres obliques ou parcourir facilement l'arborescence de répertoires.

Pour plus d'informations, reportez-vous à docs ou ce billet de blog , qui couvre les différences entre os.path et pathlib.

7
Kim