尝试从python2.7中的boto3模块获取CSV文件和S3存储桶时出现无效的时间戳错误

时间:2016-03-25 16:07:36

标签: python csv amazon-web-services amazon-s3 boto3

我正在尝试将.csv文件存储在S3存储桶中。 CSV编译器将CSV上载到S3存储桶,我的代码(python 2.7)在Unix环境中运行。 CSV看起来像这样(我已经包含回车符):

Private Sub Worksheet_Change(ByVal Target As Range)

With Me

    If Not Intersect(Target, .Range("M5:M2500")) Is Nothing Then

        Application.EnableEvents = False
        .Unprotect Password:="unlock"

        Dim rng As Range, cel As Range
        Set rng = Target

        For Each cel In rng

            If InStr(1, cel, "Completed") Then

                'use offset of 12 columns to get to column "Y"

                cel.Offset(, 12).Value = Now

            Else

                cel.Offset(, 12).ClearContents

            End If

        Next

        Application.EnableEvents = True

    End If

    '.Protect Password:="unlock"

End With

End Sub

我从s3存储桶获取文件的代码:

Order,Item,Date,Quantity\r
1,34975,8/4/15,10\r
2,921644,3/10/15,2\r
3,N18DAJ,1/7/15,10\r
4,20816,12/12/15,9\r

import boto3 def readcsvFromS3(bucket_name, key): s3 = boto3.resource('s3') obj = s3.Object(bucket_name=bucket_name, key=key) response = obj.get() data = response['Body'].read() 行发生错误。而我得到的错误是:

response = obj.get()

我一直在研究,但似乎无法弄清楚这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

经过数天的搜索和调试,我们终于确定了问题的原因。我们尝试以JSON格式而不是CSV格式上传文件,想象一下当我们在Python中使用boto3下载文件时看到同样的错误时我们会感到惊讶。

我们开始在S3中查看文件本身的属性(右键单击文件并单击“属性”)而不是内容。

我们找到了一个名为Metadata的部分,并找到了以下条目:

Key: Expires / Value: Tue, 15 Jan 48199 02:16:52 GMT.

将值的年份更改为2200之后的日期后,一切正常!我们现在正在调查Node.js中的上传过程,看看我们如何确保正确设置此值。