class twisted.protocols.ftp.FTPFileListProtocol(basic.LineReceiver): (source)
Parser for standard FTP file listings
This is the evil required to match:
-rw-r--r-- 1 root other 531 Jan 29 03:26 README
If you need different evil for a wacky FTP server, you can override either fileLinePattern
or parseDirectoryLine()
.
It populates the instance attribute self.files, which is a list containing dicts with the following keys (examples from the above line):
Note that the 'date' value will be formatted differently depending on the date. Check http://cr.yp.to/ftp.html if you really want to try to parse it.
It also matches the following:
-rw-r--r-- 1 root other 531 Jan 29 03:26 I HAVE\ SPACE - filename: e.g. 'I HAVE SPACE' -rw-r--r-- 1 root other 531 Jan 29 03:26 LINK -> TARGET - filename: e.g. 'LINK' - linktarget: e.g. 'TARGET' -rw-r--r-- 1 root other 531 Jan 29 03:26 N S -> L S - filename: e.g. 'N S' - linktarget: e.g. 'L S'
Instance Variable | files | list of dicts describing the files in this listing |
Class Variable | fileLinePattern | Undocumented |
Class Variable | delimiter | Undocumented |
Method | __init__ | Undocumented |
Method | lineReceived | Override this for when each line is received. |
Method | parseDirectoryLine | Return a dictionary of fields, or None if line cannot be parsed. |
Method | addFile | Append file information dictionary to the list of known files. |
Method | unknownLine | Deal with received lines which could not be parsed as file information. |
Class Variable | _encoding | Undocumented |
Inherited from LineReceiver:
Class Variable | MAX_LENGTH | The maximum length of a line to allow (If a sent line is longer than this, the connection is dropped). Default is 16384. |
Instance Variable | line_mode | Undocumented |
Method | clearLineBuffer | Clear buffered data. |
Method | dataReceived | Protocol.dataReceived. Translates bytes into lines, and calls lineReceived (or rawDataReceived, depending on mode.) |
Method | setLineMode | Sets the line-mode of this receiver. |
Method | setRawMode | Sets the raw mode of this receiver. Further data received will be sent to rawDataReceived rather than lineReceived. |
Method | rawDataReceived | Override this for when raw data is received. |
Method | sendLine | Sends a line to the other end of the connection. |
Method | lineLengthExceeded | Called when the maximum line length has been reached. Override if it needs to be dealt with in some special way. |
Instance Variable | _buffer | Undocumented |
Instance Variable | _busyReceiving | Undocumented |
Inherited from Protocol (via LineReceiver):
Class Variable | factory | Undocumented |
Method | logPrefix | Return a prefix matching the class name, to identify log messages related to this protocol instance. |
Method | connectionLost | Called when the connection is shut down. |
Inherited from BaseProtocol (via LineReceiver, Protocol):
Instance Variable | connected | Undocumented |
Instance Variable | transport | Undocumented |
Method | makeConnection | Make a connection to a transport and a server. |
Method | connectionMade | Called when a connection is made. |
Inherited from _PauseableMixin (via LineReceiver):
Instance Variable | paused | Undocumented |
Method | pauseProducing | Undocumented |
Method | resumeProducing | Undocumented |
Method | stopProducing | Undocumented |
Override this for when each line is received.
Parameters | line | The line which was received with the delimiter removed. (type: bytes ) |
Return a dictionary of fields, or None if line cannot be parsed.
Parameters | line | line of text expected to contain a directory entry (type: str) |
Returns | dict |
Append file information dictionary to the list of known files.
Subclasses can override or extend this method to handle file information differently without affecting the parsing of data from the server.
Parameters | info | dictionary containing the parsed representation of the file information (type: dict) |
Deal with received lines which could not be parsed as file information.
Subclasses can override this to perform any special processing needed.
Parameters | line | unparsable line as received (type: str) |