@No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta Agradezco tus consejos enserio, esto me va a ayudar a mejorar bastante. Muchísimas gracias, de verdad

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úNo tienes permitido ver enlaces. Registrate o Entra a tu cuentaGracias por tu opinión animanegra, la próxima vez intentaré hacerlo desde el módulo socket para ver cómo me queda.
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.
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()