versiones igvault guia fortnite python path string-literals

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:

  1. Python no procesará las secuencias de escape en literales de cadenas con el prefijo r o R :

    >>> r''C:/meshes/as'' ''C://meshes//as'' >>> print(r''C:/meshes/as'') C:/meshes/as

  2. Python en Windows debería manejar barras diagonales también.

  3. Podría usar os.path.join ...

    >>> import os >>> os.path.join(''C:'', os.sep, ''meshes'', ''as'') ''C://meshes//as''

  4. ... o el módulo pathlib más pathlib

    >>> 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)