Python3:ftp文件上传抛出TypeError:Type str不支持缓冲区API

时间:2016-07-14 17:10:30

标签: python-3.x encoding raspberry-pi ftplib

我正在使用python 3.4.2将日志文件上传到ftp服务器(为了简单起见,我删除了try和with语句):

import ftplib

ftp = ftplib.FTP(url)
ftp.login(name, password)
ftp.storlines("STOR " + "mylog.log", open("log/mylog.log"))
ftp.close()

mylog.log文件有一个“text / plain; charset = us-ascii”编码。 在我的macbook上一切正常。当我在覆盆子pi(通过ssh)上执行我的小程序时,我收到以下错误消息:

Traceback (most recent call last):
  File "./ftptest.py", line 7, in <module>
    ftp.storlines("STOR " + "mylog.log", open("log/mylog.log"))
  File "/usr/lib/python3.4/ftplib.py", line 537, in storlines
    if buf[-1] in B_CRLF: buf = buf[:-1]
TypeError: Type str doesn't support the buffer API

我猜这是一些编码和/或本地设置问题。我究竟做错了什么?这里的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

从我对http://bugs.python.org/issue6822的阅读中,我认为对于Python 3.x,您需要open("log/mylog.log", "rb")