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
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!
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()