Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 如何使用fabric解析此数据?_Python_Fabric - Fatal编程技术网

Python 如何使用fabric解析此数据?

Python 如何使用fabric解析此数据?,python,fabric,Python,Fabric,我使用fabric perform scrapyd task,服务器返回正在执行的任务的id,但我想在下面获取此代码并将所有id放入列表中,但当我使用r.status时,出现错误:“\u AttributeString”对象没有属性“status”错误,如何获取所有id?代码: @task def stop_slave_machine(slave_ip = None): jobs_id = [] with cd("/spider/distributed/wzws"):

我使用fabric perform scrapyd task,服务器返回正在执行的任务的id,但我想在下面获取此代码并将所有id放入列表中,但当我使用r.status时,出现错误:“\u AttributeString”对象没有属性“status”错误,如何获取所有id?代码:

@task
def stop_slave_machine(slave_ip = None):
    jobs_id = []
    with cd("/spider/distributed/wzws"):
        if not None:
            r = local("curl http://%s:%s/listjobs.json?project=WzwsSpider" % (slave_ip, scrapyd_port))              
            print(r.status)
和服务器返回数据:


{status:“ok”,“running:“{”start_time:“2016-03-28 18:21:21.951943”,“id:“d10eae6cf4ce11e5a6646cae8b23c5da”,“spider:“wzws”},{”start_time:“2016-03-28 18:21:26.945244”,“id:“d11a47f4f4ce11e5a6646cae8b23c5da”,“spider:“wzws”},{”start"time:“2016-03-28 18:21:31.941162”,“E528BCE526CAE528B23C5C56DA:“spider”;“wzID:“WzWzWZWZWZWZWZW”;“spider”},{“开始时间”:“2016-03-28 18:21:36.941122”,“id”:“d12975b2f4ce11e5a6646cae8b23c5da”,“spider”:“wzws”},{“开始时间”:“2016-03-28 18:21:41.941010”,“id”:“d131096cf4ce11e5a6646cae8b23c5da”,“spider”:“wzws”},“finished”:[],“pending”:[],“node\u name”:“XXXXXXX”
JSON返回的代码体。可以使用python的库将响应转换为python对象。从那里,您可以迭代“running”列表,提取每个的
id

大概是这样的:

from json import loads

# turn r into a python object as long as r is a string (hence loads not load)
returned = loads(r)

# Make a list ids from a list comprehension where we pull out the value
# id from each item in the list 'running' from the object returned
ids = [ r["id"] for r in returned["running"] ]

我需要添加一个参数r=local(“curl http://%s:%s/listjobs.json?project=WzwsSpider”%(slave\u ip,scrapyd\u port),capture=True),我不懂。我假设我的建议中已经设置了
r
。我可以对其进行编辑,将您的代码放在
导入
行和
加载
调用之间,如果这样可以使代码更清晰的话。