temp_dir = 'spam'
dir_name = 'foo/bar/baz.xyz'  # should be escaped somehow
dir = os.path.join(temp_dir, dir_name)
os.mkdir(dir)

Necesito crear un directorio dentro de temp_dir con el nombre dir_name. Pero el código actual producirá 3 directorios anidados dentro de temp_dir.

Intenté reemplazar cada barra en dir_name con \/ pero os.mkdir ignora el escape con \ y lo trato como parte del nombre de directorio anidado.

2
aiven 17 sep. 2018 a las 15:24

3 respuestas

La mejor respuesta

Este no es un problema de Python, sino un problema del sistema operativo. Su sistema operativo no admitirá nombres de carpetas que contengan caracteres de barra diagonal.

2
Yves Daoust 17 sep. 2018 a las 12:33

No puedes hacer esto. De otra manera, ¿cuál sería la diferencia para el sistema operativo entre 'foo / bar / baz.xyz' como archivo y 'foo / bar / baz.xyz' como carpeta? Creo que es una mala idea y no encontrarás una solución.

6
Dmytro Huz 17 sep. 2018 a las 12:30

Si el nombre del directorio contiene una barra oblicua, el módulo del SO lo ve como :. Por lo tanto, puede crear directorios que contengan barras inclinadas especificando el nombre del directorio de la siguiente manera os.mkdir(path + "dir:name"). La carpeta se llamará dir / name.

0
Schumi395 21 ene. 2020 a las 19:45