Part of twisted.protocols.ftp View Source View In Hierarchy
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 |
| 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. |
Inherited from LineReceiver:
| Class Variable | delimiter | The line-ending delimiter to use. By default this is b'\r\n'. |
| 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. |
| 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. |
Inherited from Protocol (via LineReceiver):
| 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):
| Method | makeConnection | Make a connection to a transport and a server. |
| Method | connectionMade | Called when a connection is made. |
Inherited from _PauseableMixin (via LineReceiver):
| Method | pauseProducing | Undocumented |
| Method | resumeProducing | Undocumented |
| Method | stopProducing | Undocumented |
| Parameters | line | The line which was received with the delimiter removed. (type: bytes) |
| Parameters | line | line of text expected to contain a directory entry (type: str) |
| Returns | dict | |
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) |
Subclasses can override this to perform any special processing needed.
| Parameters | line | unparsable line as received (type: str) |