Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:ftp

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:python:ftp [2020/11/06 12:39] – [Listar ficheros] tempwininformatica:programacion:python:ftp [2020/11/06 12:56] (actual) – [Python: FTP] tempwin
Línea 1: Línea 1:
 ====== Python: FTP ====== ====== Python: FTP ======
  
-Módulo **ftplib**+En todas las notas se utiliza el módulo **ftplib**
  
 ===== Login ===== ===== Login =====
Línea 14: Línea 14:
  
 ftp.login("usuario", "contraseña") ftp.login("usuario", "contraseña")
 +
 +# Cerramos la conexión
 +ftp.close()
 </code> </code>
  
Línea 40: Línea 43:
 <code python> <code python>
 ftp.cwd("directorio") ftp.cwd("directorio")
 +</code>
 +
 +==== Descargar ficheros ====
 +
 +Descarga de un fichero:
 +
 +<code python>
 +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)
 +</code>
 +
 +===== Ejemplos =====
 +
 +Descarga de un fichero:
 +
 +<code python>
 +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)
 +</code>
 +
 +Descarga de varios ficheros:
 +
 +<code python>
 +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()
 </code> </code>
informatica/programacion/python/ftp.1604662763.txt.gz · Última modificación: por tempwin