Respostas:
você pode usar sempre:
'C:/mydir'
isso funciona tanto no linux quanto no windows. Outra possibilidade é
'C:\\mydir'
se você tiver problemas com alguns nomes, também pode tentar literais de strings brutos:
r'C:\mydir'
no entanto, a melhor prática é usar as os.path
funções do módulo que sempre selecionam a configuração correta para o seu sistema operacional:
os.path.join(mydir, myfile)
No python 3.4, você também pode usar o módulo pathlib . Isso é equivalente ao acima:
pathlib.Path(mydir, myfile)
ou
pathlib.Path(mydir) / myfile
Use o os.path
módulo
os.path.join( "C:", "meshes", "as" )
Ou use strings não processadas
r"C:\meshes\as"
Também não recomendaria espaços no caminho ou nos nomes dos arquivos. E você pode usar barras invertidas duplas em suas cordas.
"C:\\meshes\\as.jpg"
"C:\"
como a primeira entrada? Isso atrapalha a limpeza do uso join
?
"C:\"
no meio do nome do arquivo. Além disso, você pode usar os.path.normpath
antes ou depois de uma junção, para garantir que o caminho seja impresso corretamente.
os.path.join( "C:\\", "meshes", "as" )
Sim, \
em literais de cadeia de caracteres Python denota o início de uma sequência de escape. No seu caminho, você tem uma sequência de escape de dois caracteres válida \a
, que é recolhida em um caractere que é ASCII Bell :
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
Outras seqüências de escape comuns incluem \t
(guia), \n
(avanço de linha), \r
(retorno de carro):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
Como você pode ver, em todos esses exemplos, a barra invertida e o próximo caractere no literal foram agrupados para formar um único caractere na sequência final. A lista completa das seqüências de escape do Python está aqui .
Existem várias maneiras de lidar com isso:
O Python não processará seqüências de escape em literais de string prefixados com r
ouR
:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
O Python no Windows também deve manipular barras.
Você poderia usar os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... ou o módulo mais recentepathlib
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
No Windows, você pode usar /
seu caminho como o Linux ou o macOS em todos os lugares , desde que você use o PowerShell como sua interface de linha de comando. Ele vem pré-instalado no Windows e suporta muitos comandos do Linux, como ls
comando.
Se você usar o prompt de comando do Windows (aquele que aparece quando você digita cmd
no menu Iniciar do Windows), precisa especificar os caminhos \
apenas dentro dele. Você pode usar /
caminhos em todos os outros lugares (editor de código, modo interativo Python, etc.).
Caso deseje colar o caminho do Windows de outra fonte (por exemplo, File Explorer) - você pode fazer isso por meio de input()
chamada no console python:
>>> input()
D:\EP\stuff\1111\this_is_a_long_path\you_dont_want\to_type\or_edit_by_hand
'D:\\EP\\stuff\\1111\\this_is_a_long_path\\you_dont_want\\to_type\\or_edit_by_hand'
Em seguida, basta copiar o resultado