我想用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执行所有功能的主文件。
任何帮助都会让我感激不尽,谢谢。
答案 0 :(得分:0)
这涉及到一些思维,但我想我知道你在寻找什么......我建立了一个名为inputs.xml
的文件,其中包含你上面引用的xml,然后我读了它并存储了输入在一个名为inputs
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)
。
它有效,我已经使用了非常相似的东西。