我正在尝试将.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()
我一直在研究,但似乎无法弄清楚这个问题。有什么想法吗?
答案 0 :(得分:0)
经过数天的搜索和调试,我们终于确定了问题的原因。我们尝试以JSON格式而不是CSV格式上传文件,想象一下当我们在Python中使用boto3下载文件时看到同样的错误时我们会感到惊讶。
我们开始在S3中查看文件本身的属性(右键单击文件并单击“属性”)而不是内容。
我们找到了一个名为Metadata的部分,并找到了以下条目:
Key: Expires / Value: Tue, 15 Jan 48199 02:16:52 GMT.
将值的年份更改为2200之后的日期后,一切正常!我们现在正在调查Node.js中的上传过程,看看我们如何确保正确设置此值。