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:
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)