/ / SFTP PUT Error en python - python, python-2.7, sftp

SFTP PUT Error en python - python, python-2.7, sftp

Este es el error

Traceback (most recent call last):
File "Juniper.py", line 66, in <module>
device_information()
File "Juniper.py", line 26, in device_information
device_connection(dev_ip,dev_username,dev_password)
File "Juniper.py", line 54, in device_connection
sftp_transfer(r)
File "Juniper.py", line 61, in sftp_transfer
c.put("%r" %r)
File "/usr/local/lib/python2.7/dist-packages/pysftp.py", line 349, in put
confirm=confirm)
File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line
667, in put
**file_size = os.stat(localpath).st_size
OSError: [Errno 2] No such file or directory: "<closed file "juniper-results20150519-191928.txt", mode "a" at
0x24a0780>"**

Y el código que produce el error es:

def device_connection(dev_ip,dev_username,dev_password):
file = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
dev = Device(host = dev_ip,user = dev_username, password = dev_password)
dev.open()
f = open("show-command.txt")

for line in iter(f):
show_command = dev.cli(line)
r = open("juniper-results" + file + ".txt","a")
r.write("***"+ line)
r.write(show_command)
r.write("n")
r.close()

sftp_transfer(r)
return

def sftp_transfer(r):
c = pysftp.Connection(host = "10.72.129.35",port = 22, username = "Anonymous" , password = "Anonymous" )
c.put("%r" %r)
return

device_information()

Respuestas

2 para la respuesta № 1

Le está diciendo a sftp que transfiera un descriptor de archivo, no el nombre del archivo.

Deberias cambiar tu sftp_transfer línea a

sftp_transfer("juniper-results" + file + ".txt")

por lo que utilizará el nombre de archivo en pysftp En lugar de tratar de usar los resultados de open guardado en r