Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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脚本添加多个动态行_Python - Fatal编程技术网

根据用户输入,通过python脚本添加多个动态行

根据用户输入,通过python脚本添加多个动态行,python,Python,假设下面是一个xml文件的示例 <AVP code="123" name="abcd"> <type> <high/> </type> </AVP> <AVP code="234" name="ukbkj"> <type> <enum/> </type> <enum name="erdf"/> <enum name="asdc"/> .....

假设下面是一个xml文件的示例

<AVP code="123" name="abcd">
<type>
    <high/>
</type>
</AVP>
<AVP code="234" name="ukbkj">
<type>
    <enum/>
</type>
<enum name="erdf"/>
<enum name="asdc"/>
 .....
 .....
(here we can add many enum name 2 4 7 9 whatever)
</AVP>
<State>
</State>

.....
.....
(在这里,我们可以添加许多枚举名称2 4 7 9任何内容)
在这个xml文件中,我必须添加AVP及其所有属性(请参见上面从“AVP标记”到“/AVP标记”的代码)。但是添加应该在状态标记之前完成。此外,我们还必须检查,如果avp类型是“enum/”标记,那么我们必须在“/type”标记之后添加“enum name”标记,这可以是任何数字,我可以通过“while loop”实现,但如果它不是“enum/”标记,那么“/type”标记之后将不会添加任何内容

示例我想添加两个AVP,一个代码为909,名称为earth,类型为high。 另一个是code=169,name=universe,type=enum(当enum出现时),然后用户add请求enum name,这应该在循环中完成,最后应该将其断开,以便可以输出控件。并且输入应该添加到xml文件中。 我试图做的是在while循环中: 要求用户输入选项,如1以插入AVP 2以删除,3以退出: 如果用户输入1,则给出avp代码、名称、类型等。 如果他插入2,然后删除AVP(我不希望你们都回答这个问题,请忽略删除操作) 如果插入,则将使用break退出,如果为True:
while True:
choice = str(input("Press 1 to Insert 2 to Delete 3 to exit "))
if choice == '1':
    avp_code = raw_input("enter avp code: ")
    avp_name = raw_input("enter avp name: ")
    avp_type = raw_input("enter the avp type: ")
    vendor_id = raw_input("enter the vendor Id: ")
    line1 = '\t\t<AVP code="'+avp_code+'" name="'+avp_name+'" vendor-id="'+vendor_id+'">\n\t\t\t<type>\n\t\t\t\t<'+avp_type+'/>\n\t\t\t</type>'
    line2 = ''
    while avp_type == "enum":
        enum_type = raw_input("enter enumeration name: ")
        line2 += '\n\t\t\t<enum name="'+enum_type+'"/>'
        enum_choice = raw_input("Add another enumeration name: yes Or no: ")
        if enum_choice == "yes":
            continue
        else:
            break
    line3 = '\n\t\t</AVP>'
    lines = line1 + line2 + line3
    for line in fileinput.input(GMPS_TOP + "_hss1/dra/test.xml", inplace=True):
        if line.strip() == '</Base>':
            print lines
        print line,
if choice == 3:
    break
choice=str(输入(“按1插入2删除3退出”)) 如果选项==“1”: avp_代码=原始输入(“输入avp代码:”) avp\U名称=原始输入(“输入avp名称:”) avp类型=原始输入(“输入avp类型:”) 供应商id=原始输入(“输入供应商id:”) 第1行='\t\t\n\t\t\t\n\t\t\t\t\t\n\t\t\t' 第2行=“” 而avp_type==“enum”: 枚举类型=原始输入(“输入枚举名称:”) line2+='\n\t\t\t' 枚举选项=原始输入(“添加另一个枚举名称:是或否:”) 如果枚举_选项==“是”: 持续 其他: 打破 第3行='\n\t\t' 线条=线条1+线条2+线条3 对于fileinput.input(GMPS_TOP+“_hss1/dra/test.xml”,inplace=True)中的行: 如果line.strip()='': 打印行 打印行, 如果选项==3: 打破
享受

你的问题到底是什么?你想做几件事,哪一件对你来说是个问题,你已经试过什么了?不要试图一下子实现所有的事情。实现对XML的更新。实现用户输入。实现循环。如果你有困难,可以问一个问题。@FrancisColas我的问题是根据用户输入添加多行。请理解。。。。不要对我的问题投反对票。@PeterWood嘿,我没有实施很多事情。我只是根据用户输入插入行。请理解它。。。如果你不能理解,那么你可以不加暗示地离开。。但不要对我的问题投反对票。你确实应该把你的问题分开,自己尝试一下,当你在某个地方陷入困境时,在这里提问。我们很乐意帮助你。目前,你的问题归结为:“我需要A、B、C。告诉我怎么做。”。