Eu escrevi um código em python que usa / para criar um arquivo específico em uma pasta; se eu quiser usar o código no Windows, ele não funcionará; existe uma maneira de usar o código no Windows e Linux.
Em python, estou usando este código:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Quando vou usar o meu código em suponha que o windows machine meu código não funcione.
Como uso "/" (separador de diretório) no Linux e no Windows?
/
em caminhos de diretório. Que problema específico você está tendo? Poste um código que ilustra o problema.Respostas:
Use
os.path.join()
. Exemplo:os.path.join(pathfile,"output","log.txt")
.No seu código, isso seria:
rootTree.write(os.path.join(pathfile,"output","log.txt"))
fonte
os.path.join
usa uma lógica mais complexa para combinar vários componentes de caminho relativo juntos. Quando você apenas deseja encadeá-los,os.sep.join
é a escolha certa.Usar:
para ver a aparência do separador em um sistema operacional atual.
No seu código, você pode usar:
fonte
Você pode usar os.sep :
fonte
os.path.normpath(pathname)
também deve ser mencionado, pois converte/
separadores de caminho em\
separadores no Windows. Ele também entra em colapso referências de nível superior redundantes ... IE,A/B
eA/foo/../B
eA/./B
todos se tornamA/B
. E se você é Windows, tudo isso se tornaA\B
.fonte
os.path.normpath('a/b/c/d/file.ext')
queos.path.join('a','b','c','d','file.ext')
quando precisar especificar um caminho longo.os.path.join
apenas se junta a qualquer coisa fornecida. por exemplo,join("a/b", "c\d")
dáa/b\c\d
(no Windows). Mas eu posso obter o resultado esperado com a combinação adequada dejoin
enormpath
, por exemploa\b\c\d
(no Windows)Se você tiver a sorte de executar o Python 3.4+, poderá usar
pathlib
:ou equivalente,
fonte
Alguns links úteis que ajudarão você:
fonte
sep
, mas não pôde resistir-me a publicar este também (eu assumi o OP será encontrado é útil para o trabalho futuro) :)Faça um
import os
e depois useos.sep
fonte
fonte
Não crie nomes de diretório e arquivo, use as bibliotecas incluídas do python.
Nesse caso, o relevante é os.path . Especialmente junção que cria um novo nome de caminho a partir de um diretório e um nome de arquivo ou diretório e divisão que obtém o nome do arquivo a partir de um caminho completo.
Seu exemplo seria
fonte