o
`wi @ sN d Z ddlZddlZddlmZ g dZdZdZdZG dd d eZ G d
d de Z
G dd
d
e ZG dd de ZG dd de Z
e eefZdZdZG dd dZzddlZW n eyc dZY nw ejZG dd deZed e eeejfZdadd Zdadd Zdd Zdd Z d d! Z!d)d$d%Z"d&d' Z#e$d(kre# dS dS )*aS An FTP client class and some helper functions.
Based on RFC 959: File Transfer Protocol (FTP), by J. Postel and J. Reynolds
Example:
>>> from ftplib import FTP
>>> ftp = FTP('ftp.python.org') # connect to host, default port
>>> ftp.login() # default, i.e.: user anonymous, passwd anonymous@
'230 Guest login ok, access restrictions apply.'
>>> ftp.retrlines('LIST') # list directory contents
total 9
drwxr-xr-x 8 root wheel 1024 Jan 3 1994 .
drwxr-xr-x 8 root wheel 1024 Jan 3 1994 ..
drwxr-xr-x 2 root wheel 1024 Jan 3 1994 bin
drwxr-xr-x 2 root wheel 1024 Jan 3 1994 etc
d-wxrwxr-x 2 ftp wheel 1024 Sep 5 13:43 incoming
drwxr-xr-x 2 root wheel 1024 Nov 17 1993 lib
drwxr-xr-x 6 1094 wheel 1024 Sep 13 19:07 pub
drwxr-xr-x 3 root wheel 1024 Jan 3 1994 usr
-rw-r--r-- 1 root root 312 Aug 1 1994 welcome.msg
'226 Transfer complete.'
>>> ftp.quit()
'221 Goodbye.'
>>>
A nice test that reveals some of the network dialogue would be:
python ftplib.py -d localhost -l -p -l
N)_GLOBAL_DEFAULT_TIMEOUT)FTPerror_reply
error_temp
error_permerror_proto
all_errors c @ e Zd ZdS )ErrorN__name__
__module____qualname__ r r /usr/lib/python3.10/ftplib.pyr
9 r
c @ r )r Nr r r r r r : r r c @ r )r Nr r r r r r ; r r c @ r )r Nr r r r r r <