J'ai écrit un code en python qui utilise / pour créer un fichier particulier dans un dossier, si je veux utiliser le code dans Windows cela ne fonctionnera pas, y a-t-il un moyen par lequel 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')
Quand j'utiliserai mon code en supposant que Windows machine, mon code ne fonctionnera pas.
Comment utiliser "/" (séparateur de répertoire) sous Linux et Windows?
/
en charge les chemins de répertoire. Quel problème spécifique rencontrez-vous? Publiez du code qui illustre le problème.Réponses:
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"))
la source
os.path.join
utilise une logique plus complexe pour faire correspondre plusieurs composants de chemin relatif ensemble. Lorsque vous voulez simplement les enchaîner,os.sep.join
c'est le bon choix.Utilisation:
pour voir à quoi ressemble le séparateur sur un système d'exploitation actuel.
Dans votre code, vous pouvez utiliser:
la source
Vous pouvez utiliser os.sep :
la source
os.path.normpath(pathname)
doit également être mentionné car il convertit les/
séparateurs de chemin en\
séparateurs sous Windows. Il s'effondre également des références cossues redondantes ... à savoir,A/B
etA/foo/../B
etA/./B
deviennent tousA/B
. Et si vous êtes Windows, tout cela devientA\B
.la source
os.path.normpath('a/b/c/d/file.ext')
queos.path.join('a','b','c','d','file.ext')
lorsque j'ai besoin de spécifier un long chemin.os.path.join
rejoint tout ce qui est fourni. par exemplejoin("a/b", "c\d")
donnea/b\c\d
(sur windows). Mais je peux obtenir le résultat attendu avec la bonne combinaison dejoin
etnormpath
, par exemplea\b\c\d
(sur Windows)Si vous avez la chance d'exécuter Python 3.4+, vous pouvez utiliser
pathlib
:ou équivalent,
la source
Quelques liens utiles qui vous aideront:
la source
sep
mais je n'ai pas pu me résister à poster ceci aussi (j'ai supposé que l'OP le trouverait utile pour les travaux futurs) :)Faites un
import os
puis utilisezos.sep
la source
la source
Ne construisez pas vous-même les noms de répertoires et de fichiers, utilisez les bibliothèques incluses de python.
Dans ce cas, celui qui convient est os.path . Surtout join qui crée un nouveau chemin à partir d'un répertoire et un nom de fichier ou un répertoire et split qui obtient le nom de fichier à partir d'un chemin complet.
Votre exemple serait
la source