Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 亚马逊s3文件下载“;TypeError:应为字符串或字节,如object“;_Python_Amazon S3 - Fatal编程技术网

Python 亚马逊s3文件下载“;TypeError:应为字符串或字节,如object“;

Python 亚马逊s3文件下载“;TypeError:应为字符串或字节,如object“;,python,amazon-s3,Python,Amazon S3,我正在尝试使用带Python的S3下载一个“csv”文件,但它返回一个关于行S3的错误。下载文件(bucket、origin、path): TypeError:应为类似字符串或字节的对象 有人知道为什么会这样吗 from boto3.session import Session import boto3 import sys ACCESS_KEY="abc" SECRET_KEY="xxx" path="./ListadePrecios.cs

我正在尝试使用带Python的S3下载一个“csv”文件,但它返回一个关于行
S3的错误。下载文件(bucket、origin、path)

TypeError:应为类似字符串或字节的对象
有人知道为什么会这样吗

from boto3.session import Session
import boto3
import sys

ACCESS_KEY="abc"
SECRET_KEY="xxx"
path="./ListadePrecios.csv"
origin="public/excel/Nombre.csv"

session = Session(aws_access_key_id=ACCESS_KEY,
                  aws_secret_access_key=SECRET_KEY)
s3 = session.resource("s3")
bucket = s3.Bucket("my_bucket")


def main(argv):
    #Descargar archivo
    s3 = boto3.client("s3", aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY)
    s3.download_file(bucket, origin, path)


if __name__ == "__main__":
    main(sys.argv[1:])
错误截图

问题是您正在将
Bucket
对象传递到:

s3.download_file(bucket, origin, path)
而是传递bucket名称:

s3.download_file("my_bucket", origin, path)
下载文件(Bucket、Key、Filename、ExtraArgs=None、Callback=None、Config=None)

将S3对象下载到文件中

用法:

import boto3
s3 = boto3.resource('s3')
s3.meta.client.download_file('mybucket', 'hello.txt', '/tmp/hello.txt')
与S3Transfer的
download_file()
方法类似,只是参数大写。详细的例子可以在S3Transfer的用法中找到

参数

  • Bucket(str)——要从中下载的Bucket的名称
  • 密钥(str)--要从中下载的密钥的名称
  • Filename(str)——要下载到的文件的路径
  • ExtraArgs(dict)——可以传递给客户端操作的额外参数
  • 回调(函数)——一种方法,在下载过程中定期调用传输的字节数
  • Config(boto3.s3.transfer.TransferConfig)——执行传输时要使用的传输配置

您的问题在于
下载文件的第一个参数

下载_文件(Bucket、Key、Filename、ExtraArgs=None、Callback=None、Config=None)

参数包括:

  • Bucket(str)——要从中下载的Bucket的名称
  • Key(str)——要从中下载的密钥的名称
  • Filename(str)——要下载到的文件的路径
所以你应该换一个

s3.download_file(bucket, origin, path)


将错误粘贴为问题中的文本,以便我们可以看到它,它将永远保留在问题中。尝试在
下载文件中用
替换
bucket
“my_bucket”
聪明多简单,谢谢,现在在ʻobj.delete()部分,正确吗?准备好的问题解决了,现在我正在解决delete fileready问题解决了,现在我正在解决删除文件的问题
s3.download_file("my_bucket", origin, path)