es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , ,

Answer

  1. Avatar for 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:

    import os
    
    carpeta_log = "log"
    archivo_log = "2022-01-06 13:56:12_BRVOZQinit.cp"
    
    ruta_log = os.path.join(carpeta_log, archivo_log.replace('/', '\\'))
    # o
    ruta_log = os.path.normpath(os.path.join(carpeta_log, archivo_log))
    

    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, utilizamos os.path.normpath() para normalizar la ruta y convertir cualquier barra inclinada en una barra invertida antes de unirla.

Comments are closed.