¿Error en ensure_dir?
Publicado: 22 de julio de 2018 - 13:22
Buen día,
Versión 1.5 de Wapt
Intenté usar `setuphelper ensure_dir` en un paquete y encontré un mal funcionamiento:
De hecho, el comando `ensure_dir('C:\Programmes\Ape')` no funcionó. Lo probé en una consola de Python con todas las combinaciones posibles (antes de 'C:\Programmes...', usando `Programmes` en lugar de `Programmes`...) y nada funcionó.
Entonces, miré el código de la función y ejecuté algunas pruebas directamente en Python:
(por supuesto el directorio C:\Archivos de programa no existe)
En la prueba 1, observamos que si `d` se declara como `path.dirname`, la función `isdir()` siempre devuelve `True`, incluso si la ruta no existe. (La respuesta que obtengo al solicitarle que muestre `d` es un poco sorprendente, pero más adelante vemos que esta no parece ser la causa del problema, aunque ya lo es)
En la prueba 2, vemos que si d se declara como una cadena y la ruta no existe, efectivamente obtenemos Falso.
En la prueba 3, vemos que, por otro lado, si la ruta existe cuando d se declara como una cadena, obtenemos un Verdadero.
Por lo tanto, me parece que en ensure_dir(), en lugar de utilizar
Deberías usar
O bien, puede utilizar directamente la variable filename, ya que `d`, en este caso, no parece tener mucha utilidad, excepto quizás para convertir filename en una cadena:
Atentamente
E. Trezel
Versión 1.5 de Wapt
Intenté usar `setuphelper ensure_dir` en un paquete y encontré un mal funcionamiento:
De hecho, el comando `ensure_dir('C:\Programmes\Ape')` no funcionó. Lo probé en una consola de Python con todas las combinaciones posibles (antes de 'C:\Programmes...', usando `Programmes` en lugar de `Programmes`...) y nada funcionó.
Entonces, miré el código de la función y ejecuté algunas pruebas directamente en Python:
(por supuesto el directorio C:\Archivos de programa no existe)
Código: Seleccionar todo
>>> ## Test 1 :
>>> d=path.dirname('C:\program rrr')
>>> d
'C:\\'
>>> path.isdir(d)
True
>>> ## Test 2 :
>>> d="C:\Program rrr"
>>> d
'C:\\Program rrr'
>>> path.isdir(d)
False
>>> ##Test 3 :
>>> d="C:\Program Files"
>>> d
'C:\\Program Files'
>>> path.isdir(d)
True
En la prueba 2, vemos que si d se declara como una cadena y la ruta no existe, efectivamente obtenemos Falso.
En la prueba 3, vemos que, por otro lado, si la ruta existe cuando d se declara como una cadena, obtenemos un Verdadero.
Por lo tanto, me parece que en ensure_dir(), en lugar de utilizar
Código: Seleccionar todo
d = os.path.dirname(filename)
Código: Seleccionar todo
d = filename
Código: Seleccionar todo
d = str(filename)
E. Trezel