August 2018
Intermediate to advanced
366 pages
10h 14m
English
The FTPClient class provides an initializer that is in charge of setting up the correct connection to the server and a bunch of methods to actually do work against the connected server.
__init__ does quite a lot of work to try setting up the proper connection to the remote server:
def __init__(self, host, username='', password=''):
self._client = ftplib.FTP_TLS(timeout=10)
self._client.connect(host)
# enable TLS
try:
self._client.auth()
except ftplib.error_perm:
# TLS authentication not supported
# fallback to a plain FTP client
self._client.close()
self._client = ftplib.FTP(timeout=10)
self._client.connect(host)
self._client.login(username, password)
if hasattr(self._client, 'prot_p'):
self._client.prot_p()
First it tries ...