Python, ajouter une barre oblique de fin à la chaîne de répertoire, os indépendamment
114
Comment puis-je ajouter une barre oblique de fin ( /pour * nix, \pour win32) à une chaîne de répertoire, si la barre oblique de fin n'est pas déjà là? Merci!
Vous devez utiliser le os.pathmodule ( docs.python.org/library/os.path.html ) au lieu de manipuler directement les chaînes. Utilisez os.path.joinpour concaténer les composants de chemin.
kennytm
2
merci Tim pour le rappel, après avoir lu la doc, je pense que la réponse à ma vraie question est os.path.join (dossier, nom de fichier) et je n'ai pas du tout à m'inquiéter de la barre oblique. mec, je vais adorer le python ;-)
ohho
2
C'est pourquoi j'ai demandé - ne faites pas cela vous-même, utilisez os.path.joinet laissez la bibliothèque standard déterminer le séparateur de chemin correct.
Tim Pietzcker
2
@ S.Lott Je ne considérerai pas cela comme «mauvais». la question est une question valable en soi. ce n'est qu'une partie d'une question plus grande (on peut dire vraie).
ohho
6
Selon ce que vous faites, cependant, la question peut toujours être intéressante. Par exemple, si vous utilisez Python pour fournir une entrée à un autre programme, vous pourriez avoir un cas où un argument a besoin d'un chemin avec une barre oblique. Cela peut être hors de votre contrôle; et est un cas d'utilisation parfaitement valable pour la réponse de Marco ci-dessous.
Chris Krycho
Réponses:
180
os.path.join(path, '') ajoutera la barre oblique de fin si ce n'est déjà fait.
Vous pouvez faire os.path.join(path, '', '')ou os.path.join(path_with_a_trailing_slash, '')et vous n'obtiendrez toujours qu'une seule barre oblique finale.
os.path.normcase(path)Normalize the case of a pathname.OnUnixandMac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase.OnWindows, it also converts forward slashes to backward slashes.
Sinon, vous pouvez chercher autre chose sur cette page
os.path
module ( docs.python.org/library/os.path.html ) au lieu de manipuler directement les chaînes. Utilisezos.path.join
pour concaténer les composants de chemin.os.path.join
et laissez la bibliothèque standard déterminer le séparateur de chemin correct.Réponses:
os.path.join(path, '')
ajoutera la barre oblique de fin si ce n'est déjà fait.Vous pouvez faire
os.path.join(path, '', '')
ouos.path.join(path_with_a_trailing_slash, '')
et vous n'obtiendrez toujours qu'une seule barre oblique finale.la source
path
s'agit d'un fichier plutôt que d'un répertoire. C'est un peu gênant.Puisque vous souhaitez connecter un répertoire et un nom de fichier, utilisez
Si vous voulez vous débarrasser des
.\..\..\blah\
chemins, utilisezla source
Vous pouvez le faire manuellement en:
Cependant, il est généralement beaucoup plus propre à utiliser
os.path.join
.la source
Vous pouvez utiliser quelque chose comme ceci:
Sinon, vous pouvez chercher autre chose sur cette page
la source