尝试上载文件时出错:应为str、bytes或哦,像路径一样对象,而不是流体

2024-09-27 07:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写python代码,使用ftplib从S3 bucket获取一个文件,并通过FTP将该文件发送到目标服务器。你知道吗

我需要使用storbinary或storlines发送的选项。当使用storbinary时,它可以工作,但是当使用storlines时,我得到一个错误,它应该是“str,bytes,or”哦,像路径一样对象,而不是Streamingbody“

我查过了,找不到任何其他人有这个问题的例子。是否可以将botocore Streamingbody视为要上载的类似文件的对象?你知道吗

if mode == 'ascii':
    ftp.storlines('STOR ' + file_name, src_file)
else:
    ftp.storbinary('STOR' + file_name, src_file)

需要上载文件,但get error“需要str、bytes或哦,像路径一样对象,而不是Streamingbody“


Tags: 文件对象代码name路径srcbytesftp
2条回答

我可以用下面的方法让它工作。我必须读取文件并将其包装成bytes对象。你知道吗

import ftplib

if mode == 'ascii':
    file_stream = src_file.read()
    bytes_obj = BytesIO(file_stream)
    ftp.storlines('STOR ' + file_name, bytes_obj)
else:
    ftp.storbinary('STOR' + file_name, src_file)

假设您正在使用ftplibboto3,您可以尝试以下操作:

import ftplib

ftp = ftplib.FTP(...)
obj = client.get_object(Bucket='mybucket', Key='objkey')
ftp.storbinary('STOR file.bin', obj['Body'])

我想你需要把src_file索引为src_file['Body']

相关问题 更多 >

    热门问题