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?
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"))
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')
Vous pouvez utiliser os.sep :
>>> import os
>>> os.sep
'/'
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
.
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
ou équivalent,
path = Path(dir) / subdir / filename
Faites un import os
puis utilisez os.sep
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)
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)