Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
使用XML和数组在Python上列出输入_Python_Xml_Arrays_List_Input - Fatal编程技术网

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

使用XML和数组在Python上列出输入,python,xml,arrays,list,input,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> -- 因此,

我想用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完成所有功能的主文件


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

这需要一点读心术,但我想我知道你在找什么。。。我构建了一个名为
inputs.xml
的文件,其中包含您上面引用的xml,然后我读取它并将输入存储在一个名为
inputs
的python字典中

从xml.etree导入元素树
输入=dict()
tree=ElementTree.parse('inputs.xml')
对于tree.getiterator('inputs')中的行:
对于第行中的元素。getchildren():
输入[elem.tag]=elem.get('value')
结果

$python
Python 2.6.5(r265:790632010年6月12日17:07:01)
[GCC 4.3.4 20090804(发布)1]关于cygwin
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>从xml.etree导入元素树
>>> 
>>>输入=dict()
>>>tree=ElementTree.parse('inputs.xml')
>>>对于tree.getiterator('inputs')中的行:
...     对于第行中的元素。getchildren():
...         输入[elem.tag]=elem.get('value')
... 
>>>打印输入
{'input2':'2-提取Tar文件','input3':'3-重新启动服务器','input1':'1-发送电子邮件'}
>>>

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

与其说是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)


它是有效的,我已经使用了非常类似的方法。

您试图问一个完整的问题,但细节仍然不清楚。您现在有什么编码问题,以及到目前为止您试图完成的1和2,我要求提供一个代码,如果我向XML添加一个输入,它将在主python文件上列出新的输入(当我运行它时)。我还没有使用任何代码,因为我不知道该使用什么。这就是我所要求的。也许你应该创建一个模块,将你所有的函数放在里面,然后将它们导入主程序中使用。因此,在本模块中,您还可以包含输入消息(已经与各自的函数关联),并完全删除xml,或者至少在一个文件中定义此关联。这非常有用,谢谢。我需要更多的信息。当我想发送邮件时,请键入1并按enter键。接下来会发生什么?Python如何知道我键入的内容?我将对源代码进行加密,因此将来无法对其进行编辑。这就是为什么我要尝试将它与XML.Fine合并。因此,至少要考虑每个函数和它的输入消息之间有很强的关联性,例如,使用字典。