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.

La biblioteca pathlib.Path de Python siempre corta la última carpeta de la ruta y la agrega al nombre del archivo creado.

Aquí está el problema, tengo una ruta que es así:

get_path = 'C:/Users/user1/Desktop/Files/File/1/category/UFF/'

Luego uso esto para “convertirlo” en una ruta de Windows:

path = pathlib.Path(get_path)

Ahora, cada vez que lo uso para crear otros archivos dentro del directorio de la ruta, mis archivos se crean dentro de la carpeta “category” con el prefijo UFF, por lo que los nombres de los archivos son:

Carpeta category:

UFFNombreArchivo1.xml
UFFNombreArchivo2.xml

en lugar de

Carpeta UFF:

NombreArchivo1.xml
NombreArchivo2.xml

Para la creación de los archivos utilizo:

tree.write(str(path)+nombre+'.xml', encoding='utf-8', xml_declaration=True)

¿Alguien tiene idea de qué está pasando?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la forma en que se construye la ruta. Como estás utilizando pathlib, puedes crear un nuevo objeto de ruta para la carpeta UFF y luego unirlo con el nombre del archivo para crear una nueva ruta donde se creará el archivo. Aquí tienes un ejemplo:

    # Ruta a la carpeta de categoría
    get_path = 'C:/Users/user1/Desktop/Files/File/1/category/UFF/'
    
    # Crea un objeto de ruta para la carpeta UFF
    uff_path = pathlib.Path(get_path).parent / 'UFF'
    
    # Crea los archivos dentro de la carpeta UFF
    name = 'NombreArchivo1'
    tree.write(str(uff_path / (name + '.xml')), encoding='utf-8', xml_declaration=True)
    

    Ten en cuenta que estamos utilizando el atributo parent del objeto de ruta para retroceder un nivel desde la carpeta UFF hasta la carpeta de categoría, y luego se une con la cadena ‘UFF’ para crear la nueva ruta de la carpeta UFF.

    Puedes repetir el mismo código para cada archivo que quieras crear, cambiando el valor de la variable name según corresponda.

Comments are closed.