将JSON文件上载到Amazon SQS时出错

时间:2015-09-15 05:16:05

标签: python amazon-web-services boto amazon-sqs

我有以下代码,基本上尝试将.json文件写入SQS

import json
import uuid
import time
import boto.sqs
import boto
from boto.sqs.connection import SQSConnection
from boto.sqs.message import Message
from boto.sqs.message import RawMessage

sqs = boto.sqs.connect_to_region("ap-southeast-1")
queue = sqs.get_queue("Demon")
json_fileone=open('emp.json')  ## this is only one JSON file 
dataone=json.load(json_fileone)

print dataone
[queue.write(queue.new_message(i)) for i in dataone]
print "File sent successfully to queue"

这会上传所需的emp.json文件,我需要做的是对文件数运行循环,因为我有emp1.json,emp2.​​json,emp3.json,emp4.json到SQS,默认情况下BOTO在发送之前执行BASE64编码...我需要以相同的格式发送这些文件,即' .json'

1 个答案:

答案 0 :(得分:0)

根据您的问题和我们的评论,您需要使用glob

import glob
json_files = glob.glob("*.json")
for json_file in json_files: 
    process_file(json_file)

因此,请将您的流程移至功能process_file。同时使用with语句来处理文件。

def process_file(json_file):
    sqs = boto.sqs.connect_to_region("ap-southeast-1")
    queue = sqs.get_queue("Demon")
    with open('emp.json') as json_fileone: 
        dataone=json.load(json_fileone)
        .....