web-dev-qa-db-fra.com

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

J'ai écrit un code dans python qui utilise/pour créer un fichier particulier dans un dossier. Si je veux utiliser le code dans Windows, il ne fonctionnera pas. Existe-t-il un moyen d'utiliser ce code? sous Windows et Linux.

En python, j'utilise ce code:

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

Quand j'utiliserai mon code dans la machine Windows supposée, mon code ne fonctionnera pas.

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

153
hulk007

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

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

228
Serban Razvan

Utilisation:

import os
print os.sep

pour voir à quoi ressemble 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')
90

Vous pouvez utiliser os.sep :

>>> import os
>>> os.sep
'/'
53
Adem Öztaş

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

31
Jon Rosen

Quelques liens utiles qui vous aideront:

14
Maroun

Si vous avez la chance d'exécuter 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 équivalent,

path = Path(dir) / subdir / filename
11
Eugene Yarmash

Faites un import os puis utilisez os.sep

9
JackPoint

Vous pouvez utiliser "os.sep"

 import os
 pathfile=os.path.dirname(templateFile)
 directory = str(pathfile)+os.sep+'output'+os.sep+'log.txt'
 rootTree.write(directory)
7
P113305A009D8M

Ne créez pas vous-même de noms de répertoire et de fichier, utilisez les bibliothèques incluses de Python.

Dans ce cas, l’important est os.path . Particulièrement join qui crée un nouveau chemin d'accès à partir d'un répertoire et un nom de fichier ou un répertoire et scinde le nom du fichier à partir d'un chemin complet.

Votre exemple serait

pathfile=os.path.dirname(templateFile)
p = os.path.join(pathfile, 'output')
p = os.path.join( p, 'log.txt')
rootTree.write(p)
4
Mark