Python ftplib – especifique el puerto

Me gustaría especificar el puerto con el cliente ftplib de Python (en lugar del puerto predeterminado 21).

Aquí está el código:

from ftplib import FTP ftp = FTP('localhost') # connect to host, default port 

¿Hay una manera fácil de especificar un puerto alternativo?

 >>> from ftplib import FTP >>> HOST = "localhost" >>> PORT = 12345 # Set your desired port number >>> ftp = FTP() >>> ftp.connect(HOST, PORT) 

Sí puedes usar conectar

 from ftplib import FTP my_ftp = FTP() my_ftp.connect('localhost', 80) # 80 is the port for example 

Encontré la respuesta. Cree una instancia del objeto FTP y luego ejecute conectar en él de esta manera:

 from ftplib import FTP ftp = FTP() ftp.connect('localhost', 2121) 

Después de buscar numerosas soluciones, una combinación de docs.python.org y el comando de connect resolvieron mi problema.

 from ftplib import FTP_TLS host = 'host' port = 12345 usr = 'user' pwd = 'password' ftps = FTP_TLS() ftps.connect(host, port) # Output: '220 Server ready for new user.' ftps.login(usr, pwd) # Output: '230 User usr logged in.' ftps.prot_p() # Output: '200 PROT command successful.' ftp.nlst() # Output: ['mysubdirectory', 'mydoc'] 

Si está utilizando FTP simple en lugar de FTPS, simplemente use ftplib.FTP en ftplib.FTP lugar.