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 = "../fileorganizer/files"
crea_cartella("docs", directorio)
if name == 'main':
principal()
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ónmain
para que coincida con el directorio especificado como argumento de línea de comandos. Para hacer esto, se puede agregar otro argumento al métodoadd_argument
del objetoArgumentParser
que represente el directorio. Aquí está una versión actualizada del código que debería funcionar correctamente:En este código actualizado, la función
main
ahora incluye otro argumento llamadodirectory
que es requerido y tiene un tipo destr
. Al analizar los argumentos, el argumentodirectory
se recupera deargs
y se pasa a la funcióncrea_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.