Você deve usar o os.pathmódulo ( docs.python.org/library/os.path.html ) em vez de manipular strings diretamente. Use os.path.joinpara concatenar componentes de caminho.
Kennytm
2
obrigado Tim por lembrar, depois de ler o documento, acho que a resposta para minha verdadeira pergunta é os.path.join (pasta, nome do arquivo) e não preciso me preocupar com a barra. cara, eu vou adorar python ;-)
ohho
2
É por isso que perguntei - não faça isso sozinho, use os.path.joine deixe a biblioteca padrão descobrir o separador de caminho correto.
Tim Pietzcker,
2
@ S.Lott Não vou considerar isso 'ruim'. a pergunta é uma pergunta válida por si só. é apenas uma parte de uma questão maior (pode-se dizer real).
ohho
6
Dependendo do que você está fazendo, no entanto, a pergunta ainda pode ser do seu interesse. Por exemplo, se estiver usando Python para fornecer entrada para outro programa, você pode ter um caso em que um argumento precisa de um caminho de barra. Isso pode estar fora de seu controle; e é um caso de uso perfeitamente válido para a resposta de Marco abaixo.
Chris Krycho
Respostas:
180
os.path.join(path, '') adicionará a barra final se ainda não estiver lá.
Você pode fazer os.path.join(path, '', '')ou os.path.join(path_with_a_trailing_slash, '')e ainda obterá apenas uma barra final.
os.path.normcase(path)Normalize the case of a pathname.OnUnixandMac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase.OnWindows, it also converts forward slashes to backward slashes.
Caso contrário, você pode procurar outra coisa nesta página
os.path
módulo ( docs.python.org/library/os.path.html ) em vez de manipular strings diretamente. Useos.path.join
para concatenar componentes de caminho.os.path.join
e deixe a biblioteca padrão descobrir o separador de caminho correto.Respostas:
os.path.join(path, '')
adicionará a barra final se ainda não estiver lá.Você pode fazer
os.path.join(path, '', '')
ouos.path.join(path_with_a_trailing_slash, '')
e ainda obterá apenas uma barra final.fonte
path
passa a ser um arquivo em vez de um diretório. Isso é um pouco inconveniente.Já que você deseja conectar um diretório e um nome de arquivo, use
Se você quiser se livrar de
.\..\..\blah\
caminhos, usefonte
Você pode fazer isso manualmente:
No entanto, geralmente é muito mais limpo de usar
os.path.join
.fonte
Você poderia usar algo assim:
Caso contrário, você pode procurar outra coisa nesta página
fonte