5

ASCII ファイルをアップロードしたい。これはPython 2で機能していました:

ftp = ftplib.FTP('ftp.domain.com')
ftp.login('domain.com',password)
ftp.cwd('subdirectory')
ftp.storlines('STOR ' + 'file.htm', open('file.htm','r'))
ftp.close()

ただし、Python 3 では次のエラーが返されます。

  File "/usr/local/lib/python3.3/ftplib.py", line 497, in storlines
    if buf[-1] in B_CRLF: buf = buf[:-1]
TypeError: Type str doesn't support the buffer API

私は何を間違っていますか?

4

1 に答える 1

6

ドキュメントを読みました: http://docs.python.org/3/library/ftplib.html#ftplib.FTP.storlines

「ファイル オブジェクト ファイル (バイナリ モードで開かれている) から EOF まで行が読み取られ、その readline() メソッドを使用して格納されるデータが提供されます。」

したがって、バイナリモードで開く必要がありました。

ftp.storlines('STOR ' + 'file.htm', open('file.htm','rb'))
于 2013-07-21T22:52:36.413 に答える