Ivan Pozdeev added the comment: The solution for the OP's problem is:
* after closing the data socket (whether it was returned by `transfercmd()'/`ntransfercmd()' or opened manually), an additional `FTP.getresp()'/`FTP.voidresp()' is required to process the 226 response. The built-in `retrbinary()' and `retrlines()' do implement this logic. But the documentation doesn't mention this requirement in `transfercmd()'/ntransfercmd()` entries (and `getresp()'/`voidresp()' are undocumented outright). `urllib' authors have fallen into this same trap: they use `transfercmd' directly but don't call `voidresp()' afterwards. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue25458> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com