427 votes

os.path.join python

Le code ci-dessous ne sera pas joint, lorsque la commande debugged, la commande ne stocke pas l'intégralité du chemin, mais uniquement la dernière entrée.

 os.path.join('/home/build/test/sandboxes/', todaystr, '/new_sandbox/')
 

Lorsque je teste cela, il ne stocke que la partie '/ new_sandbox /' du code. Quelqu'un peut-il aider?

Merci

563voto

Craig McQueen Points 13194

La dernière des chaînes ne faut pas commencer par une barre oblique. S'ils commencent par une barre oblique, puis ils sont considérés comme un "chemin absolu" et tout ce qui est avant est jeté.

Citant le Python docs pour os.path.join:

Si l'une des composantes est un chemin absolu, tous les composants précédents (sur Windows, y compris la lettre de lecteur précédente, si il y en avait un) sont jetés, et de rejoindre continue.

171voto

Antony Hatchkins Points 5831

L'idée de os.path.join est de rendre votre programme multi-plateforme (linux / win32 / etc).

Même un coup réduit à néant.

Cela n'a donc de sens que lorsqu'on utilise un type de point de référence tel que os.environ['HOME'] ou os.path.dirname(__file__)

96voto

ghammond Points 224

os.path.join peut être utilisé avec os.path.sep pour créer un chemin absolu plutôt que relatif.

 os.path.join(os.path.sep, 'home','build','test','sandboxes',todaystr,'new_sandbox')
 

36voto

miku Points 63392

n'utilisez pas de barres obliques au début des composants du chemin, sauf lorsque vous vous référez au répertoire racine:

 os.path.join('/home/build/test/sandboxes', todaystr, 'new_sandbox')
 

voir aussi: http://docs.python.org/library/os.path.html#os.path.join

16voto

Amber Points 159296

C'est parce que votre '/new_sandbox/' commence par / et est donc supposé être relatif au répertoire racine. Supprimer le premier / .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X