web-dev-qa-db-fra.com

Comment ajouter une chaîne à un chemin d'accès en Python?

Le code suivant:

from pathlib import Path
Desktop = Path('Desktop')
SubDeskTop = Desktop + "/subdir"

obtient l'erreur suivante:

    ---------------------------------------------------------------------------
 TypeError                                 Traceback (most recent call last)
    <ipython-input-4-eb31bbeb869b> in <module>()
             1 from pathlib import Path
             2 Desktop = Path('Desktop')
       ----> 3 SubDeskTop = Desktop+"/subdir"

     TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'

Je fais clairement quelque chose de louche ici, mais cela soulève la question: comment accéder à un sous-répertoire d'un objet Path?

11
Ray Salemi

Il s'avère que la réponse était d'une simplicité embarrassante. L'opérateur correct est '/'

 from pathlib import Path
 Desktop = Path('Desktop')
 SubDeskTop = Desktop/"subdir"
13
Ray Salemi

Ce que vous recherchez, c'est:

from pathlib import Path
Desktop = Path('Desktop')
SubDeskTop = Path.joinpath(Desktop, "subdir")

la fonction joinpath() ajoutera le deuxième paramètre au premier et ajoutera le '/' pour vous.

3
r.ook

Ou

from pathlib import Path

p1 = Path('somewhere')
p2 = p1.joinpath(p1, "over/there")

# or if you want to just create it in one line

p1.joinpath(p1, "new/place").mkdir()
0
CpILL