informatica:programacion:python:ftp
Tabla de Contenidos
Python: FTP
En todas las notas se utiliza el módulo ftplib
Login
Iniciar sesión en un servidor FTP.
# Cogemos solo el objeto 'FTP' del módulo ftplib from ftplib import FTP ftp = FTP("servidor.ftp") ftp.login("usuario", "contraseña") # Cerramos la conexión ftp.close()
Si el servidor FTP permite acceso anónimo, no tendríamos que poner ningún argumento en el método login(), es decir: ftp.login()
Listar ficheros
El método nlst() devuelve una lista con los ficheros y directorios del servidor FTP.
ftp.nlst() # Resultado: # ['.', '..', 'directorio', 'archivo.txt'] # Podemes especificar el directorio que queremos listar: ftp.nlst("directorio")
Navegar
Para movernos por directorios, utilizamos el método cwd():
ftp.cwd("directorio")
Descargar ficheros
Descarga de un fichero:
from ftplib import FTP import os ftp.cwd("directorio") # Directorio local donde se descargará el fichero os.chdir("/home/usuario/datos") with open("archivo.txt", "wb") as file: ftp.retrbinary("RETR archivo.txt", file.write)
Ejemplos
Descarga de un fichero:
from ftplib import FTP import os def ftpDownloader(archivo, host, user, password): ftp = FTP(host) ftp.login(user, password) ftp.cwd("datos") os.chdir("/home/usuario/datos") with open(archivo, "wb") as file: ftp.retrbinary("RETR %s" % archivo, file.write)
Descarga de varios ficheros:
from ftplib import FTP, error_perm import os # La siguiente función descargará todo lo que hay dentro de directorio # 'Data' que sigue el siguiente formato 'año/id/id-año.gz' def ftpDownloader(id, startYear, endYear, url, user, password): ftp = FTP(url) ftp.login(user,password) if not os.path.exists("/home/usuario/directorio"): os.makedirs("/home/usuario/directorio") os.chdir("/home/usuario/directorio") for year in range(startYear, endYear+1): fullpath='/Data/%s/%s-%s.gz' % (year, id, year) filename = os.path.basename(fullpath) try: with open(filename,"wb") as file: ftp.retrbinary('RETR %s' % fullpath, file.write) print("%s succesfully downloaded" % filename) except error_perm: print("%s is not available" % filename) os.remove(filename) ftp.close()
informatica/programacion/python/ftp.txt · Última modificación: por tempwin
