A menudo hay que acceder a un ftp y bajarse gran número de ficheros con un determinado nombre de diferentes directorios. Automatizar este proceso puede ser bastante útil en muchos casos. Usar un cliente FTP gráfico no suele ser de ayuda en estos casos. Los clientes FTP en línea de comandos son interactivos por lo que no se pueden realizar scripts con ellos, más allá de ejecutar una lista de comandos predefinida.
Este simple script se conecta a un servidor, se posiciona en la carpeta 'CATASTRO', y se accede a todos los directorios con profundidad '1' guardando los ficheros que interesan, en este caso shapefiles llamados MASA, en una carpeta local.
#!/usr/bin/python # DESCRIPTION: Python script that connects to a FTP server and # gets some Shapefiles from 'CATASTRO' folder and subfolders # AUTHOR: Nacho Uve # DATE : May 2008 # LICENSE: GPL2 or greater from ftplib import FTP ftp = FTP('server.com'); ftp.login(user='myuser', passwd='mypassword') ftp.cwd("CATASTRO"); # OPTION: To get a 'ls -l' list # dirs = [] # # Used a callback to 'dirs' # ftp.dir(dirs.append) dirs = ftp.nlst() for row in dirs: print row ftp.cwd(row) # Save shapefiles in the local machine with the first word of the folder as filename ftp.retrbinary('RETR MASA.SHP', open(row.split()[0]+'.shp','wb').write) ftp.retrbinary('RETR MASA.SHX', open(row.split()[0]+'.shx','wb').write) ftp.retrbinary('RETR MASA.DBF', open(row.split()[0]+'.dbf','wb').write) ftp.cwd('..') ftp.quit()
No hay comentarios:
Publicar un comentario