Respuestas:
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 literales de cadena sin formato:
r'C:\mydir'
Sin embargo, la mejor práctica es utilizar las os.path
funciones del módulo que siempre seleccionan la configuración correcta para su sistema operativo:
os.path.join(mydir, myfile)
Desde python 3.4 también puede usar el módulo pathlib . Esto es equivalente a lo anterior:
pathlib.Path(mydir, myfile)
o
pathlib.Path(mydir) / myfile
Usa el os.path
módulo.
os.path.join( "C:", "meshes", "as" )
O use cadenas crudas
r"C:\meshes\as"
También recomendaría que no haya espacios en la ruta o los nombres de archivo. Y podría usar barras invertidas dobles en sus cadenas.
"C:\\meshes\\as.jpg"
"C:\"
como la primera entrada? ¿Eso estropea un poco la limpieza del uso join
?
"C:\"
en el medio del nombre del archivo. Además, puede usar os.path.normpath
antes o después de una unión, para asegurarse de que la ruta se imprima bien.
os.path.join( "C:\\", "meshes", "as" )
Sí, \
en los 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 personaje 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
(tabulación), \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 solo carácter en la cadena final. La lista completa de las secuencias de escape de Python está aquí .
Hay una variedad de formas de lidiar con eso:
Python no procesará secuencias de escape en literales de cadena con el prefijo r
oR
:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
Python en Windows también debería manejar barras diagonales.
Podrías usar os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... o el módulo más nuevopathlib
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
En Windows, puede usar /
en su ruta al igual que Linux o macOS en todos los lugares , siempre que use PowerShell como su interfaz de línea de comandos. Viene preinstalado en Windows y admite muchos comandos de Linux comols
comando.
Si usa el símbolo del sistema de Windows (el que aparece cuando escribe cmd
en el menú Inicio de Windows), debe especificar rutas con \
solo dentro. Puede usar /
rutas en todos los demás lugares (editor de código, modo interactivo de Python, etc.).
En caso de que desee pegar la ruta de Windows desde otra fuente (por ejemplo, Explorador de archivos), puede hacerlo mediante una input()
llamada en la consola de 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'
Luego solo copia el resultado