228 votes

Comment utiliser "/" (séparateur de répertoire) sous Linux et Windows en Python ?

J'ai écrit un code en python qui utilise / pour faire un fichier particulier dans un dossier, si je veux utiliser le code dans Windows, il ne fonctionnera pas, y a-t-il un moyen par lequel je peux utiliser le code dans Windows et Linux.

En python, j'utilise ce code :

pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')

Lorsque j'utiliserai mon code dans une machine Windows, mon code ne fonctionnera pas.

Comment utiliser "/" (séparateur de répertoire) sous Linux et Windows ?

309voto

Serban Razvan Points 572

Utilice os.path.join() . Exemple : os.path.join(pathfile,"output","log.txt") .

Dans votre code, ce serait : rootTree.write(os.path.join(pathfile,"output","log.txt"))

138voto

Utilisez :

import os
print os.sep

pour voir ce que donne le séparateur sur un système d'exploitation actuel.
Dans votre code, vous pouvez utiliser :

import os
path = os.path.join('folder_name', 'file_name')

75voto

Adem Öztaş Points 4007

Vous pouvez utiliser os.sep :

>>> import os
>>> os.sep
'/'

61voto

Jon Rosen Points 619

os.path.normpath(pathname) doit également être mentionné car il convertit / séparateurs de chemin dans \ séparateurs sous Windows. Il réduit également les références redondantes de niveau supérieur, c'est-à-dire.., A/B et A/foo/../B et A/./B tous deviennent A/B . Et si vous êtes Windows, tout cela devient A\B .

26voto

eugene y Points 37378

Si vous avez la chance d'utiliser Python 3.4+, vous pouvez utiliser pathlib :

from pathlib import Path

path = Path(dir, subdir, filename)  # returns a path of the system's path flavour

ou, de manière équivalente,

path = Path(dir) / subdir / filename

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