纠正代码块的格式化和重用

时间:2018-01-12 18:16:20

标签: python function variables xml-parsing

所以我需要构建一个访问API以从防火墙中提取报告的脚本,下面是我做的哈希工作,对于那些精通python的人,请善待,我意识到我可能打破每一条规则。

所以问题:(脚本可以在这里找到 - https://github.com/Marct27/PAN_reporter

  • 我对函数的理解有限,我注意到我正在重用脚本的某些部分,我可以传递参数。

    #Parse xml and get root key value
    tree = ET.parse(resp)
    root = tree.getroot()
    #From return xml find job id of report
    j=root.find('status')
    jID=j.find('job')
    

我认为该函数看起来像这样:

        def parseXML(arg1, arg2):
            #Parse xml and get root key value
            tree = ET.parse(resp)
            root = tree.getroot()
            #From return xml find job id of report
            j=root.find(arg1)
            jID=j.find(arg2)
            print 'Job ID :', jID.text
            return jID

然而,当我尝试用:

调用该函数时
parseXML('status','job')

我最终得到以下错误:

NameErrorTraceback (most recent call last)
    <ipython-input-4-03280b8af912> in <module>()
         62                 time.sleep(5)
         63             #From xml get job status
    ---> 64                 apiPullReport = '/api/?
    type=report&action=get&job-id=%s&key=%s' % (jID.text, apiKey)
         65                 req = urllib2.Request(host+apiPullReport, head)
         66                 resp = urllib2.urlopen(req, context = ctx)

    NameError: name 'jID' is not defined

我是否需要声明一个函数将更新的全局变量,或者是否有其他方式来定义变量?

  • 我是否应该考虑使用这类课程(不确定这是否是正确的术语)?或建议的正确格式是什么使它更“python正确”

1 个答案:

答案 0 :(得分:0)

根据 coldspeed 的评论,指出需要定义函数返回的变量才能使用它。

  首先

jID = parseXML('status','job'),然后您可以在其功能之外使用它。 - cᴏʟᴅsᴘᴇᴇᴅ53分钟前

如果有人想要审核,请更新guthub文件。

再次感谢您的帮助