我想通过FTP上传文本字符串作为文件.
import ftplib
from io import StringIO
file = StringIO()
file.write("aaa")
file.seek(0)
with ftplib.FTP() as ftp:
ftp.connect("192.168.1.104", 2121)
ftp.login("ftp", "ftp123")
ftp.storbinary("STOR 123.txt", file)
此代码返回错误:
TypeError: 'str' does not support the buffer interface
最佳答案 这可能是python 3中的一个混乱点,特别是因为像csv这样的工具只能写str,而ftplib只接受字节.
解决此问题的一种方法是在写入之前扩展io.BytesIO以将str编码为字节:
import io
import ftplib
class StrToBytesIO(io.BytesIO):
def write(self, s, encoding='utf-8'):
return super().write(s.encode(encoding))
file = StrToBytesIO()
file.write("aaa")
file.seek(0)
with ftplib.FTP() as ftp:
ftp.connect(host="192.168.1.104", port=2121)
ftp.login(user="ftp", passwd="ftp123")
ftp.storbinary("STOR 123.txt", file)