python - igvault - qgis manual
Ruta de Windows en Python (3)
Sí, /
en literales de cadena de Python denota el inicio de una secuencia de escape. En su camino, tiene una secuencia de escape válida de dos caracteres /a
, que se contrae en un carácter que es ASCII Bell :
>>> ''/a''
''/x07''
>>> len(''/a'')
1
>>> ''C:/meshes/as''
''C://meshes/x07s''
>>> print(''C:/meshes/as'')
C:/meshess
Otras secuencias de escape comunes incluyen /t
(tab), /n
(avance de línea), /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 puede ver, en todos estos ejemplos, la barra diagonal inversa y el siguiente carácter en el literal se agruparon para formar un único carácter en la cadena final. La lista completa de las secuencias de escape de Python está here .
Hay una variedad de formas de lidiar con eso:
Python no procesará las secuencias de escape en literales de cadenas con el prefijo
r
oR
:>>> r''C:/meshes/as'' ''C://meshes//as'' >>> print(r''C:/meshes/as'') C:/meshes/as
Python en Windows debería manejar barras diagonales también.
Podría usar
os.path.join
...>>> import os >>> os.path.join(''C:'', os.sep, ''meshes'', ''as'') ''C://meshes//as''
... o el módulo
pathlib
máspathlib
>>> from pathlib import Path >>> Path(''C:'', ''/'', ''meshes'', ''as'') WindowsPath(''C:/meshes/as'')
¿Cuál es la mejor manera de representar un directorio de Windows, por ejemplo, "C:/meshes/as"
? He estado tratando de modificar un guión, pero nunca funciona porque parece que no puedo obtener el directorio correcto, supongo que debido a la ''/'
actuar como personaje de escape?
Use el módulo os.path
.
os.path.join( "C:", "meshes", "as" )
O use cadenas sin formato
r"C:/meshes/as"
puedes usar siempre:
''C:/mydir''
esto funciona tanto en Linux como en Windows. Otra posibilidad es
''C://mydir''
si tiene problemas con algunos nombres, también puede probar los literales de cadena sin formato:
r''C:/mydir''
sin embargo, la mejor práctica es usar las funciones del módulo os.path
que siempre seleccionan la configuración correcta para su sistema operativo:
os.path.join(mydir, myfile)