Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - V1c70r

#1
Python / Re:Sencillo cliente FTP
Julio 02, 2020, 06:44:42 PM
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Agradezco tus consejos enserio, esto me va a ayudar a mejorar bastante. Muchísimas gracias, de verdad :)
#2
Python / Re:Sencillo cliente FTP
Julio 02, 2020, 04:59:15 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Igual como siguiente paso, podrias programar el cliente ftp sin la libreria ftp. Utilizando sockets y viendo como es el estandar para hacer una implementacion tuya.
Igual no es cuestion de hacer todo el standard pero podrias implementar parte de las acciones que hace el cliente. Podrias incluir algo asi como una parte grafica. Las aplicaciones graficas siempre motivan un monton mas que las aplicaciones de linea de comando, al menos al principio.
Es solo una idea, la cuestion es seguir programando y aprendiendo.
Gracias por tu opinión animanegra, la próxima vez intentaré hacerlo desde el módulo socket para ver cómo me queda.

Enviado desde mi Redmi 8 mediante Tapatalk

#3
Python / Sencillo cliente FTP
Julio 02, 2020, 02:45:50 AM
Hola a todos/as!

Esta es mi primera entrada aquí y quería compartir con vosotros un sencillo cliente para un servidor FTP. Estoy aprendiendo a programar en Python y pensé que una buena manera de aprender es compartir mi código y mirar las opiniones de los demás para ir acumulando ideas y consejos.

Un saludo!

Código: python

from ftplib import FTP
import os
from getpass import getpass

class ftpClient():
    def __init__(self):
        while True: 
            try:
                self.host = str(input("Host address: "))
                self.ftp = FTP(self.host)
                print(self.ftp.getwelcome())
                break
            except:
                print("Couldn't connect to host")
                pass

        self.user = input("Username: ")
        self.passwd = getpass()
        self.ftp.login(self.user, self.passwd)
       
       
   
    def menu(self):
        os.system("cls")
        print("""
           
             ___    _____  ___       ___    _                     _   
            (  _`\ (_   _)(  _`\    (  _`\ (_ )  _               ( )_
            | (_(_)  | |  | |_) )   | ( (_) | | (_)   __    ___  | ,_)
            |  _)    | |  | ,__/'   | |  _  | | | | /'__`\/' _ `\| | 
            | |      | |  | |       | (_( ) | | | |(  ___/| ( ) || |_
            (_)      (_)  (_)       (____/'(___)(_)`\____)(_) (_)`\__)

            1. Download Files for FTP server
            2. Upload Files for FTP server
        """)

#LLama al metodo menu() para despues pregunta la opción que deseamos, valida el valor de entrada y llama al metodo correspondiente.
    def main(self):
        self.menu()
        while True:
            self.option = int(input("What is your option? > "))
            if self.option == 1:
                self.downloadFile()
                break
            elif self.option == 2:
                self.uploadFile()
                break
            else:
                print("Incorrect options, try again!")

# Imprime archivos y directorios remotos, descarga el contenido del fichero citado y lo copia a uno nuevo.
# Por ultimo imprime el contenido del directorio local
    def downloadFile(self):
        self.ftp.retrlines("LIST")
        self.file = str(input("Which file? > "))
        try:
            self.ftp.retrbinary("RETR " + self.file, open(self.file, "wb").write)
            print(os.listdir())
            print("Succesful download")
        except:
            print("An error ocurred :(")
   
#Imprime los archivos locales del directorio en el que nos encontramos, abrimos el archivo en modo lectura binario para luego pasarlo ....
#Como parametro de ftp.storbinary para subirlo después.
    def uploadFile(self):
        print(os.listdir())
        self.file = str(input("Which file > "))
        self.open = open(self.file, "rb")
        try:
            self.ftp.storbinary("STOR " + self.file, self.open)
            self.ftp.retrlines("LIST")
            print("Succesful upload!")
        except:
            print("An error ocurred")

if __name__ == "__main__":     
    client = ftpClient()
    client.main()