0
I implemented a FTP Server in Python using pyftpdlib.ftpserver
This works fine with mput/put operations but fails with mget/get. Following exception is thrown:

[]10.203.200.136:62408 接続しました。10.203.200.136:62408 ==> 220 pyftpdlib 0.5.2 準備完了。10.203.200.136:62408 <== USER ユーザー 10.203.200.136:62408 ==> 331 ユーザー名 OK、パスワードを送信します。10.203.200.136:62408 <== パス** 10.203.200.136:62408 ==> 230 ログイン成功。[user]@10.203.200.136:62408 ユーザー ユーザーがログインしました。10.203.200.136:62408 <== PORT 10,203,200,136,243,206 10.203.200.136:62408 ==> 200 アクティブなデータ接続が確立されました。10.203.200.136:62408 <== NLST RS.pcap [ユーザー]@10.203.200.136:62408 OK NLST "/RS.pcap". 転送開始。10.203.200.136:62408 ==> 125 データ接続は既に開いています。転送開始。10.203.200.136:62408 ==> 226 転送完了。10.203.200.136:62408 <== タイプ A 10.203.200.136:62408 ==> 200 タイプ: ASCII。10.203.200.136:62408 <== PORT 10,203,200,136,243,208 10.203.200.136:62408 ==> 200 アクティブなデータ接続が確立されました。10.203.200.136:62408 <== RETR RS.pcap [ユーザー]@10.203.200.136:62408 OK RETR "/RS.pcap". ダウンロード開始。10.203.200.136:62408 ==> 125 データ接続は既に開いています。転送開始。10.203.200.136:62408 ==> 426 内部エラー。転送が中止されました。

Traceback (most recent call last):
    File "C:\Python31\lib\asynchat.py", line 244, in initiate_send
        data = buffer(first, 0, obs)
    File "C:\Python31\lib\asynchat.py", line 56, in buffer
        memoryview(obj)
TypeError: cannot make memory view because object does not have the buffer interface

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
    File "C:\Python31\lib\pyftpdlib\ftpserver.py", line 2077, in push_dtp_data
        self.data_channel.push_with_producer(data)
    File "C:\Python31\lib\asynchat.py", line 211, in push_with_producer
        self.initiate_send()
    File "C:\Python31\lib\asynchat.py", line 246, in initiate_send
        data = first.more()
    File "C:\Python31\lib\pyftpdlib\ftpserver.py", line 1143, in more
        return bytes(data, BYTES_ENCODING)
TypeError: encoding or errors without a string argument

asynchat.py (内部で呼び出されます) では、initiate_send で buffer が呼び出され、memoryview(obj) が完了すると例外がスローされます。obj は FileProducer タイプのオブジェクトです。

誰でも考えられるエラーを提案できますか? Python ライブラリに問題はありますか? それを解決する方法は?

4

1 に答える 1

0

実際のコードを見ずに言うのは難しい。これは、str / bytesの区別に関連しているようです(Python3ではPython2から変更されています)。pyftpdlibのホームページから、pyftpdlibはまだPython3をサポートしていないようです。

于 2012-11-30T17:04:38.657 に答える