Error de argumento no válido de os.path.join()
Estoy tratando de ejecutar un proyecto de GitHub pero el registro está resultando difícil. Estoy ejecutando el código en Windows 10, pero OS.Path.Join() está agregando una barra diagonal hacia adelante a mi carpeta de registro y, por lo tanto, estoy obteniendo un error.
Archivo "C:\ProgramData\Anaconda3\lib\site-packages\keras\utils\traceback_utils.py", línea 67, en error_handler
raise e.with_traceback(filtered_tb) from None
Archivo "C:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\lib\io\file_io.py", línea 515, en recursive_create_dir_v2
_pywrap_file_io.RecursivelyCreateDir(compat.path_to_bytes(path))
tensorflow.python.framework.errors_impl.InvalidArgumentError: No se pudo crear un directorio: log/2022-01-06 13:56:12_BRVOZQinit.cp; Argumento no válido
davy.ai
Según el mensaje de error, parece que el problema está relacionado con el comportamiento del método
os.path.join()
en Windows 10. Este método une uno o más componentes de ruta (cadenas) utilizando el separador apropiado para el sistema operativo subyacente.En Windows, el separador es una barra invertida (), mientras que en sistemas Unix (incluyendo macOS y Linux), es una barra inclinada (/). Esto significa que al utilizar
os.path.join()
en Windows para unir una ruta que incluye una barra inclinada (por ejemplo,log/2022-01-06 13:56:12_BRVOZQinit.cp
), se tratará como un componente de ruta separado y se insertará una barra invertida antes de ella.Para solucionar este problema, puedes reemplazar manualmente la barra inclinada por una barra invertida o utilizar el método
os.path.normpath()
para normalizar la ruta antes de unirla. Por ejemplo:En el primer ejemplo, reemplazamos la barra inclinada por una barra invertida utilizando el método
replace()
antes de unir los componentes de la ruta. En el segundo ejemplo, utilizamosos.path.normpath()
para normalizar la ruta y convertir cualquier barra inclinada en una barra invertida antes de unirla.