python - TypeError : expected str, 字节或 os.PathLike 对象,而不是 _io.BytesIO

标签 python python-3.x sftp paramiko pysftp

尝试使用 ssh 从 Internet 上传文件到我的服务器。有以下代码可以很好地上传本地文件,但我不知道还需要做什么才能让图片字节对象上传。

from io import BytesIO
import requests
import pysftp
url = 'https://vignette.wikia.nocookie.net/disney/images/d/db/Donald_Duck_Iconic.png'

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None 
response = requests.get(url)
netimage = BytesIO(response.content) #imagefromurl

srv = pysftp.Connection(host="12.34.567.89", username="root123",
password="password123",cnopts=cnopts)

with srv.cd('/var/www'): #srvdir
    #srv.put('C:\Program Files\Python36\LICENSE.txt') #local file test
    srv.put(netimage) 

print('Complete')

最佳答案

您需要使用 .open() method获取类似文件的对象,然后使用 shutil.copyfileobj() 复制您的数据:

import shutil

with srv.cd('/var/www'):
    with srv.open(image_filename, 'w') as remote_file:
        shutil.copyfileobj(netimage, remote_file)

Paramiko(以及扩展名 pysftp)不支持直接放置内存中的文件对象。

关于python - TypeError : expected str, 字节或 os.PathLike 对象,而不是 _io.BytesIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49267558/

相关文章:

java - 从未收到 SSH 服务器标识 - 握手死锁 [SSHJ]

Python Stripe SDK 身份验证错误( key 至少包含一个空格)

python - 如何以编程方式识别网站结构的变化

python - jsonify 上的值错误

python - Python 映射中的副作用(Python "do" block )

python - 从具有匹配词的主列表生成列表,无论顺序如何

python - 根据列表中的多个元素对列表进行排序

java - 在 Java 中使用 JSch 列出 SFTP 服务器上目录的完整层次结构

php - 使用 AWS 弹性 Beanstalk 的 FTP

Python方式从文件中导出数字证书信息