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)
davy.ai
Parece que la comprobación de un
item.filename
vacío no está funcionando como se esperaba. La condiciónif not str(item)
solo verifica si el objetoitem
en sí está vacío, pero no si su atributofilename
está vacío.Para solucionar esto, la condición debe cambiarse a
if not item.filename
para comprobar explícitamente siitem.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.