python3, ftplib storlines 错误

标签 python python-3.x ftp

我想上传一个 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

我做错了什么?

最佳答案

我阅读了文档: http://docs.python.org/3/library/ftplib.html#ftplib.FTP.storlines

“使用其 readline() 方法从文件对象文件(以二进制模式打开)读取行直到 EOF 以提供要存储的数据。”

所以我只需要以二进制模式打开:

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

关于python3, ftplib storlines 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777745/

相关文章:

python - 基于最频繁值的子集

python - 重新定义子类的 __init__ 以采用不同的参数

python - 从Python执行shell命令并合并环境更改(没有子进程)?

python - If 语句在每次出现时重复

Python:开始使用 tk,小部件不在网格上调整大小?

python - 如何在 CNTK Sequential 中添加两层

python - OpenCv 不接受函数中的多个绘制指令(在 Python 中)

java - 为什么JList不显示新添加的元素?

.net - 在一次调用中递归获取所有 FTP 目录/文件列表

javascript - 示例node.js ftp 服务器?