He escrito un código en Python que usa / para hacer un archivo en particular en una carpeta, si quiero usar el código en Windows no funcionará, ¿hay alguna manera de usar el código en Windows y Linux?
En python estoy usando este código:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Cuando usaré mi código en una máquina Windows, mi código no funcionará.
¿Cómo uso "/" (separador de directorio) en Linux y Windows?
/
en rutas de directorio. ¿Qué problema específico tienes? Publique un código que ilustre el problema.Respuestas:
Uso
os.path.join()
. Ejemplo:os.path.join(pathfile,"output","log.txt")
.En su código eso sería:
rootTree.write(os.path.join(pathfile,"output","log.txt"))
fuente
os.path.join
usa una lógica más compleja para unir varios componentes de ruta relativa. Cuando solo quieres encadenarlos,os.sep.join
es la elección correcta.Utilizar:
para ver cómo se ve el separador en un sistema operativo actual.
En su código puede usar:
fuente
Puedes usar os.sep :
fuente
os.path.normpath(pathname)
También debe mencionarse, ya que convierte los/
separadores de ruta en\
separadores en Windows. También se derrumba referencias redundantes de alta gama ... es decir,A/B
eA/foo/../B
, yA/./B
todos se conviertenA/B
. Y si eres Windows, todo esto se convierteA\B
.fuente
os.path.normpath('a/b/c/d/file.ext')
queos.path.join('a','b','c','d','file.ext')
cuando necesito especificar un camino largo.os.path.join
simplemente se une a todo lo proporcionado. por ejemplo,join("a/b", "c\d")
daa/b\c\d
(en ventanas). Pero puedo obtener el resultado esperado con la combinación adecuada dejoin
ynormpath
, por ejemploa\b\c\d
(en Windows)Si tiene la suerte de ejecutar Python 3.4+, puede usar
pathlib
:o equivalente,
fuente
Algunos enlaces útiles que te ayudarán:
fuente
sep
pero no pude resistirme a publicar esto también (asumí que el OP lo encontrará útil para el trabajo futuro) :)Haz un
import os
y luego usaos.sep
fuente
fuente
No construya los nombres de directorio y archivo usted mismo, use las bibliotecas incluidas de Python.
En este caso el relevante es os.path . Especialmente join, que crea un nuevo nombre de ruta a partir de un directorio y un nombre de archivo o directorio y divide que obtiene el nombre de archivo de una ruta completa.
Tu ejemplo sería
fuente