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.

Directorio argparse no encontrado.

El código debería crear un directorio y mover el archivo a él, y funciona bien cuando no se usa Argparse. Con Argparse, me quedo atascado en el punto en que no se encuentra el directorio.

Error de CLI:

Traceback (última llamada más reciente):
  Archivo "/ Usuarios / d / PycharmProjects / fileorganizer / addfile.py", línea 20, en <module>
    principal()
  Archivo "/ Usuarios / d / PycharmProjects / fileorganizer / addfile.py", línea 17, en principal
    crea_cartella("docs", directorio)
  Archivo "/ Usuarios / d / PycharmProjects / fileorganizer / addfile.py", línea 8, en crea_cartella
    os.mkdir(newdirectory)
FileNotFoundError: [Errno 2] No existe el archivo o directorio: '../fileorganizer/files/docs'

Código:

importar os
import argparse

def crea_cartella(nomeCartella, directory):
newDirectory = os.path.join(directory, nomeCartella)
os.mkdir(newDirectory)

def principal():
parser = argparse.ArgumentParser(description="mueve un archivo a la carpeta de destino")
parser.add_argument("–nomeFile", type=str, help="nombre completo del archivo con extensión")

args = parser.parse_args()

directorio = &quot;../fileorganizer/files&quot;
crea_cartella(&quot;docs&quot;, directorio)

if name == 'main':
principal()

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema parece ser que el directorio especificado en la función crea_cartella no se está identificando correctamente al usar Argparse. El mensaje de error sugiere que la función está buscando el directorio ../fileorganizer/files/docs pero este no existe.

    Para solucionar este problema, es necesario modificar la variable directory en la función main para que coincida con el directorio especificado como argumento de línea de comandos. Para hacer esto, se puede agregar otro argumento al método add_argument del objeto ArgumentParser que represente el directorio. Aquí está una versión actualizada del código que debería funcionar correctamente:

    import os
    import argparse
    
    def crea_cartella(nomeCartella, directory):
        newDirectory = os.path.join(directory, nomeCartella)
        os.mkdir(newDirectory)
    
    def main():
        parser = argparse.ArgumentParser(description="sposta un file nella cartella di destinazione")
        parser.add_argument("--nomeFile", type=str, help="nome file compreso di estensione")
        parser.add_argument("--directory", type=str, required=True, help="directory di destinazione")
    
        args = parser.parse_args()
    
        directory = args.directory
        crea_cartella("docs", directory)
    
    if __name__ == '__main__':
        main()
    

    En este código actualizado, la función main ahora incluye otro argumento llamado directory que es requerido y tiene un tipo de str. Al analizar los argumentos, el argumento directory se recupera de args y se pasa a la función crea_cartella en lugar de la ruta de directorio codificada. Esto debería permitir que la función identifique correctamente el directorio y cree la nueva carpeta.

Comments are closed.