viernes, 26 de junio de 2009

Accediendo un servidor ftp con python usando ftplib

Es común necesitar automatizar ciertas tareas al interactuar con un servidor ftp. Por lo tanto tenemos una fácil opción de interactuar desde nuestro script python con el servidor remoto con una librería estándar muy util: ftplib. No debemos tener problemas con instalación o cualquier otra configuración pues esta librería viene por defecto con la instalación básica de python.

Para importar el objeto ftp simplemente usaremos

from ftplib import FTP


el primer método con el que nos veremos relacionados es el constructor que en el cual podemos llevar acabo toda la conexión, su sintaxis es la siguiente:

class ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])

hacemos la conexion:

host = “ftp.host.org”
user = “juan”
passwd= “secreto”
tp = FTP(host, user, passwd)

Y hemos entablado la comunicación con el servidor ftp. Ahora veamos algunos métodos comunes en el manejo ftp.


Para crear un nuevo directorio remoto

ftp.mkd('galeria')

Para cambiar a un nuevo directorio de trabajo remoto
ftp.cwd('galeria')

pwd nos muestra el directorio actual en el que nos encontramos.
ftp.pwd()
/htdocs/galeria


Finalmente el famoso dir, que nos mostrara el contenido del directorio actual en la salida estándar de nuestro prompt
ftp.dir()

Ahora bien, para cargar un archivo de forma binaria se utiliza:

f = open('imagen.png', 'rb')
ftp.storbinary('STOR imagen.png', f)
f.close()

Y para descargar un archivo en forma binaria al directorio de trabajo local actual:

ftp.retrbinary('RETR imagen.png', open('imagen2.png', 'wb').write)

Finalmente, para eliminar un archivo remoto:

ftp.delete('imagen.png')

Y para eliminar un directorio

ftp.rmd('galeria')

espero este breve recorrido por el uso de los comandos ftp haya sido útil para todos...

2 comentarios:

  1. me gusto mucho tu explicacion, ahora mi pregunta es como lo harias sin usar la libreria de FTP?

    ResponderEliminar
  2. me gusto mucho tu explicacion, ahora mi pregunta es como lo harias sin usar la libreria de FTP?

    ResponderEliminar