我一直在试图找到一种方法,使用AWS lambda函数将头添加到csv文件中。实际的文件包含敏感信息,所以我一直在玩一个来自互联网的csv样本。我不能使用熊猫,因为我们还没有设置该层,所以我只能使用'requests'和'csv'。你知道吗
基本get请求获取数据:
import boto3
import os
import requests
from base64 import b64decode
import botocore
import csv
import json
import fileinput
def lambda_handler(event, context):
url = 'http://winterolympicsmedals.com/medals.csv'
query = requests.get(url)
print (query.text)
结果:
Response:
null
Request ID:
"2c17f3a7-e00f-4301-a647-51a66e755b17"
Function Logs:
1998,Nagano,Bobsleigh,Bobsleigh,GBR,four-man,M,Bronze
1998,Nagano,Biathlon,Biathlon,GER,15km,W,Bronze
1998,Nagano,Biathlon,Biathlon,GER,4x7.5km relay,M,Gold
1998,Nagano,Biathlon,Biathlon,GER,4x7.5km relay,W,Gold
1998,Nagano,Biathlon,Biathlon,GER,7.5km,W,Bronze
到目前为止,我掌握的情况如下:
import boto3
import os
import requests
from base64 import b64decode
import botocore
import csv
import json
def lambda_handler(event, context):
url = 'http://winterolympicsmedals.com/medals.csv'
query = requests.get(url)
with open('/tmp/medals.csv', 'w+', newline='') as f:
r = csv.reader(f)
data = [line for line in r]
with open('/tmp/medals.csv','w',newline='') as f:
w = csv.writer(f)
w.writerow(['user', 'first', 'last', 'email', 'local', 'membership', 'login'])
w.writerows(data)
return f
在许多不同的错误中,我放弃了这个:
Response:
{
"errorMessage": "Unable to marshal response: <_io.TextIOWrapper name='/tmp/medals.csv' mode='w' encoding='UTF-8'> is not JSON serializable",
"errorType": "Runtime.MarshalError"
}
感谢您的帮助。你知道吗
给你。其思想是读取csv并使用逗号分隔符将其列为一个列表。然后使用write rows来写入整行。我不得不删除列表的第一个元素来删除现有的标题。你知道吗
希望这有帮助
相关问题 更多 >
编程相关推荐