【问题标题】:using boto to upload csv file into Amazon S3 bucket使用 boto 将 csv 文件上传到 Amazon S3 存储桶
【发布时间】:2015-02-13 15:01:58
【问题描述】:

我正在尝试使用 boto 将 csv 文件上传到我在 python 中名为“my-bucketname”的现有 Amazon S3 存储桶

我得到一个错误“NoneType”对象没有属性“set_contents_from_filename”

所以我想我无法与 S3 存储桶正确建立连接。

谁能帮我解决这个问题?

这是我的代码。

s3conn = boto.connect_s3(aws_access_key_id,aws_secret_access_key)
upload_file = '/home/csvfilename.csv'
key = s3conn.get_bucket('my-bucketname').get_key('csvfilename.csv')
key.set_contents_from_filename(upload_file)

更新

    s3Conn = boto.connect_s3(access_key,secret_key)
    bucket2 = self.s3Conn.lookup('my-bucket-name')
    k = Key(bucket2)
    k.Key = "sg_details.csv"
    k.set_contents_from_filename("sg_details.csv")

【问题讨论】:

    标签: python-2.7 csv amazon-web-services amazon-s3 boto


    【解决方案1】:
    bucket2 = conn.lookup(bucketname)
    k = Key(bucket2) 
    k.key = filename
      k.set_contents_from_filename(filename) 
    print('Completed')
    

    试试这个,这应该可以正常工作。我不确定你为什么使用 getkey

    【讨论】:

    • 好的。上传文件,但文件名是一些随机字符,而不是我的实际文件名。在我的代码中,“uploadfile”包含我的文件的整个路径,“key”只包含文件名。 set_contents_from_filename 在参数中包含“上传文件”
    • 您是否设置了 k.key = 文件名?无论您设置什么 k.key 都将是您的文件名
    • 是的。我确实将 k.key 设置为我的文件名。我在互联网上搜索了一下,我想我需要添加标题以确保文件名保持不变。虽然不确定。
    • 我不这么认为。我只是使用了我拥有的文件名,并且效果很好。您的文件名是否包含任何特殊字符?
    • stackoverflow.com/questions/28116881/… 看看这个。那是我有问题的代码,它运行良好。检查您的代码中是否有任何错误。
    猜你喜欢
    • 2018-04-04
    • 2018-04-12
    • 2020-12-19
    • 2015-05-05
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    相关资源
    最近更新 更多