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.

Verifique si se descargó algún archivo en la transferencia de archivos recursiva de Paramiko.

No puedo entender por qué no puedo obtener el código de salida 1 en esta función cuando “item” o “item.filename”, que es la ruta absoluta del archivo, está vacío.

def sftp_get_recursive(path, dest, sftp):
    item_list = sftp.listdir_attr(path)
    dest = str(dest)
    if not os.path.isdir(dest):
        os.makedirs(dest, exist_ok=True)
    for item in item_list:
        mode = item.st_mode
        if not str(item):
           print(item.filename)
           print("No se encontró ningún archivo")
           sys.exit(1)
        elif S_ISDIR(mode):
           sftp_get_recursive(path + "/" + item.filename, dest + "/" + item.filename, sftp)
        else:
           sftp.get(path + "/" + item.filename, dest + "/" + item.filename)
           print("Enviando archivo desde:", path + "/" + item.filename)
           sftp.remove(path + "/" + item.filename)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que la comprobación de un item.filename vacío no está funcionando como se esperaba. La condición if not str(item) solo verifica si el objeto item en sí está vacío, pero no si su atributo filename está vacío.

    Para solucionar esto, la condición debe cambiarse a if not item.filename para comprobar explícitamente si item.filename es una cadena vacía. Esto debería permitir que la función salga correctamente con el código 1 cuando encuentre un nombre de archivo vacío.

Comments are closed.