使用XML和数组在Python上列出输入

时间:2011-10-13 12:39:07

标签: python xml arrays list input

我想用Python和XML对某种函数进行排序,但我真的很困惑。

我会举个例子,

config.xml文件中包含3个输入选项。

<inputs>
    <input1 value='1- Sending Email' />
    <input2 value='2- Extracting a Tar File' />
    <input3 value='3- Rebooting Server' />
</inputs>

-

所以,我已经在名为“funcs”的文件夹中python了每个函数,我对它们没有任何问题。

我想要的只是;

1-列出输入并询问选择哪一个。

2-我需要通过数组来完成它。因为我以后只想更新XML文件,所以我永远不会触及让python执行所有功能的主文件。

任何帮助都会让我感激不尽,谢谢。

2 个答案:

答案 0 :(得分:0)

这涉及到一些思维,但我想我知道你在寻找什么......我建立了一个名为inputs.xml的文件,其中包含你上面引用的xml,然后我读了它并存储了输入在一个名为inputs

的python字典中
from xml.etree import ElementTree

inputs = dict()
tree = ElementTree.parse( 'inputs.xml' )
for row in tree.getiterator('inputs'):
    for elem in row.getchildren():
        inputs[elem.tag] = elem.get('value')

结果......

$ python
Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01) 
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from xml.etree import ElementTree
>>> 
>>> inputs = dict()
>>> tree = ElementTree.parse( 'inputs.xml' )
>>> for row in tree.getiterator('inputs'):
...     for elem in row.getchildren():
...         inputs[elem.tag] = elem.get('value')
... 
>>> print inputs
{'input2': '2- Extracting a Tar File', 'input3': '3- Rebooting Server', 'input1': '1- Sending Email'}
>>>

现在假设您从用户那里获取输入并将其作为字符串存储在名为input的python变量中...如果您想要访问用户选择的选项,请使用inputs["input"+input] ...

答案 1 :(得分:0)

这似乎是一个体系结构问题,而不是Python问题。

如果你有一堆你永远不想触摸的函数,你应该让每个函数都与某个地方的输入消息相关联(很可能是在函数的相同源代码上,而不是在xml中)。

例如,您可以将所有功能放在一个文件中,然后将其作为模块导入。

然后,当您运行程序时,您创建一个要呈现给用户的函数列表,以数字方式对它们进行排序,并显示每个函数的输入消息。

模块示例:

def reset():
    print "reset all"

def sendmail():
    print "send mail"

funcs = {
    "reset":     {"function": reset,    "message": "Choose to reset"},
    "sendmail":  {"function": sendmail, "message": "Choose to email someone"}
    }

通过这样做,xml应该只包含funcs字典的键。然后,为了打印消息,您应该使用funcs['reset']['message'],并且要使用该功能,您应该使用funcs['reset']['function'](args)

它有效,我已经使用了非常相似的东西。