Hoy me tomé un par de minutos para programar un cliente FTP oficial del sitio web. Es por consola, pero vamos que ya estoy en planes de pasarlo a PyQT4. El código consta de 133 humildes líneas, intenté utilizar el máximo control de errores en el programa, para evitar que el programa salga de su curso normal... Si alguien ve que falla en algo por favor avisad aquí mismo ! , el cliente FTP por consola nos permitirá un par de acciones una vez conectado, estas son las básicas:
1.- Listar directorios / Archivos.
2.- Ingresar a un directorio.
3.- Eliminar un archivo ó directorio.
4.- Crear un directorio.
5.- Descargar un archivo remoto.
6.- Enviar un archivo local.
7.- Ver peso de un archivo remoto.
8.- Desconectar.
No creo que sea necesario describir cada una, así que los invito a leer el código :
Código
¡ Espero les haya gustado !
# -*- coding: utf-8 -*- from ftplib import FTP while True: estado_conexion = 0 try: print """ ¡ Hola, bienvenido al cliente FTP - RootCodes.Com ! ¿ Qué deseas hacer ? 1.- Conectar a servidor FTP. 2.- Creditos/Autor. 3.- Salir. """ opc = input("Opcion:") if opc == 1: try: servidor = raw_input("Servidor: ") usuario = raw_input("Usuario: ") clave = raw_input("Clave: ") sesion = FTP(servidor) print sesion.getwelcome() try: estado_conexion = 1 sesion.login(usuario,clave) pasive_mode = raw_input("¿ Desea activar el modo pasivo ? (s/n) > ").lower() if pasive_mode == "s": print "¡ Activando modo pasivo !" try: sesion.set_pasv(True) print "¡ Modo pasivo activado !" except: print "¡ No se pudo activar modo pasivo !" while estado_conexion!=0: print "\n\nActualmente te encuentras en:", sesion.pwd() print """ 1.- Listar directorios / Archivos. 2.- Ingresar a un directorio. 3.- Eliminar un archivo ó directorio. 4.- Crear un directorio. 5.- Descargar un archivo remoto. 6.- Enviar un archivo local. 7.- Ver peso de un archivo remoto. 8.- Desconectar. """ try: in_server = input("Opción: ") except: print "¡ Ingresa un número porfavor !" if in_server == 1: try: print "Lista de archivos / directorios:" sesion.dir() except: print "¡ Error al listar archivos / directorios !" elif in_server == 2: try: join_dir = raw_input("Directorio: ") sesion.cwd(join_dir) except: print "¡ Error al intentar ingresar al directorio !" elif in_server == 3: print "1.- Eliminar archivo.\n2.- Eliminar Directorio." try: que_eliminar = input("Opción: ") except: print "¡ Por favor ingresa un número válido !" if que_eliminar == 1: try: archivo_del = raw_input("Archivo a eliminar: ") sesion.delete(archivo_del) print "¡ Archivo eliminado correctamente !" except: print "¡ Error al intentar eliminar el archivo !" elif que_eliminar == 2: try: carpeta_del = raw_input("Directorio a eliminar: ") sesion.rmd(carpeta_del) print "¡ Directorio Eliminado correctamente !" except: print "¡ Error al intentar eliminar el directorio !" else: print "¡ Opción ingresada no existe !" elif in_server == 4: try: crear_carpeta = raw_input("Nombre del nuevo directorio: ") sesion.mkd(crear_carpeta) print "¡ Nuevo directorio creado con éxito !" except: print "¡ Error al intentar crear el directorio !" elif in_server == 5: try: archivo_download = raw_input("Archivo a descargar: ") sesion.retrbinary("RETR %s"%archivo_download, open(archivo_download,"wb").write) print "¡ Archivo descargado con éxito !" except: print "¡ No se pudo descargar el archivo !" elif in_server == 6: try: archivo_local = raw_input("Archivo local: ") file_local = open(archivo_local,'rb') sesion.storbinary("STOR "+archivo_local, file_local) file_local.close() print " ¡Archivo enviado con éxito !" except: print "¡ No se pudo enviar el archivo !" elif in_server == 7: try: archivo_peso = raw_input("Archivo local: ") print "El peso del archivo %s, es: %s"%(archivo_peso,sesion.size(archivo_peso)) except: print "¡ No se pudo obtener el peso !" elif in_server == 8: sesion.quit() estado_conexion=0 print "¡ Desconectado con éxito !" except: print "¡ No se pudo lograr la conexión !" except: print "¡ Error en los datos de conexión !" elif opc == 2: print """ Créditos -> Autor : JaAViEr || 0x5d Twitter : @0x5d WebSite : http://www.rootcodes.com """ elif opc == 3: print "¡ Gracias por utilizar Cliente FTP - RootCodes.Com !" break except: print "¡ Opción incorrecta !"
Fuente : http://rootcodes.com/pythoncliente-ftp-rootcodes-com/
Saludos, Javier.