Comment utiliser “/” (séparateur de répertoires) 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, cela ne fonctionnera pas. Est-ce que je peux utiliser le code sous 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, supposons que Windows Machine mon code ne fonctionnera pas.

Comment utiliser “/” (séparateur de répertoires) sous Linux et Windows?

Utilisez 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"))

Utilisation:

 import os print os.sep 

pour voir comment le séparateur regarde un OS actuel.
Dans votre code, vous pouvez utiliser:

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

Vous pouvez utiliser os.sep :

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

os.path.normpath(pathname) doit également être mentionné lors de la conversion des séparateurs / chemins dans \ separators sous Windows. Il réduit également les références redondantes à la hausse … c’est-à-dire que A/B et A/foo/../B et A/./B deviennent tous A/B Et si vous êtes Windows, tout cela devient A\B

Quelques liens utiles qui vous aideront:

  • os.sep
  • os.path
  • os.pathsep

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 

Faites une import os puis utilisez os.sep

Ne construisez pas de répertoires et de noms de fichiers, utilisez les bibliothèques incluses de python.

Dans ce cas, le plus pertinent est os.path . En particulier, join, qui crée un nouveau chemin d’access à partir d’un répertoire et un nom de fichier ou un répertoire, puis divise le fichier par 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) 

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)