Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将JSON文件上载到Amazon SQS时出错_Python_Amazon Web Services_Boto_Amazon Sqs - Fatal编程技术网

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

Python 将JSON文件上载到Amazon SQS时出错,python,amazon-web-services,boto,amazon-sqs,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("

我有下面的代码,它基本上尝试将.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”

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

因此,将您的进程移动到函数
进程\u文件
。同时使用
语句来处理文件

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)
        .....

根据您的问题和我们的意见,您需要使用

因此,将您的进程移动到函数
进程\u文件
。同时使用
语句来处理文件

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)
        .....

在[dataone]中为i尝试
[queue.write(queue.new_message(i))
可能
[queue.write(queue.new_message(i))在dataone中为i尝试
[queue.write(queue.new_message(i)]
是的。。。[queue.write(queue.new_message(i))for i in dataone]这可以工作。。。但若我有n个json文件要发送到队列呢?你们的数据格式是什么??我说的只是胡乱猜测。正确的代码取决于您的数据。我想上传的文件是5个json文件,我需要将它们上传到SQS,但默认情况下,boto会在发送base 64之前对它们进行编码。。我不想。。。所以我需要做两件事:1。上载大量文件{我猜在插入for循环之前需要进行lil修改}2。这些.json文件应该是RawMessages()…更新您的问题,而不是注释。请尝试在[dataone]中为i使用
[queue.write(queue.new_message(i)]
可能在[dataone]中为i使用
[queue.write(queue.new_message(i)]
是的。。。[queue.write(queue.new_message(i))for i in dataone]这可以工作。。。但若我有n个json文件要发送到队列呢?你们的数据格式是什么??我说的只是胡乱猜测。正确的代码取决于您的数据。我想上传的文件是5个json文件,我需要将它们上传到SQS,但默认情况下,boto会在发送base 64之前对它们进行编码。。我不想。。。所以我需要做两件事:1。上载大量文件{我猜在插入for循环之前需要进行lil修改}2。这些.json文件应该是RawMessages()…更新您的问题,而不是注释。是。。它起作用了。。还有一个问题。。。这将上载json文件并将其作为单个对象存储在SQS中。。这实际上是队列的期望行为吗?嗯,我对SQS知之甚少,也许你应该阅读官方文档,或者四处搜索错误。是的。。它起作用了。。还有一个问题。。。这将上载json文件并将其作为单个对象存储在SQS中。。这实际上是队列的期望行为吗?嗯,我对SQS知之甚少,也许你应该阅读官方文档,或者四处搜索错误。