2013-07-21 89 views
4

我想上傳一個ASCII文件。這曾經在Python 2的工作:python3,ftplib storlines錯誤

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 

我在做什麼錯?

回答

5

我閱讀文檔: http://docs.python.org/3/library/ftplib.html#ftplib.FTP.storlines

「線從文件對象文件中讀取直到EOF使用其的readline()方法來提供要存儲的數據(在二進制模式打開)」

所以我不得不以二進制方式打開:

ftp.storlines('STOR ' + 'file.htm', open('file.htm','rb')) 
+0

我相信當湯米回答了自己的問題,他不放過/關鍵角色ftp.storlines(「STOR」 +「file.htm」 ,打開('file.htm','rb')),除非我錯了。 – 2013-10-28 20:48:57

+0

謝謝羅利!固定。 –

+0

我有完全相同的問題,但我的錯誤是'TypeError:需要類似字節的對象,而不是'str''也許是更新的版本? –