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

时间:2015-03-16 07:21:50

标签: 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"/>
 .....
 .....
(here we can add many enum name 2 4 7 9 whatever)
</AVP>
<State>
</State>

在这个xml文件中,我必须添加具有所有属性的AVP(参见上面的代码,从“AVP tag”到“/ AVP tag”)。但是添加应该在State标签之前完成。另外我们必须检查如果avp类型是“enum /”标签,那么我们在“/ Type”标签之后添加“enum name”标签,可以是任何数字,我可以用“while循环”实现但是如果它不是“enum /”标签,那么在“/ Type”标签之后不会添加任何内容。

示例我想添加2个avps one,代码= 909,name = earth,type = high。 另一个代码= 169,name = universe,type = enum(当enum到来时)然后用户添加要求枚举名称,这应该在循环中完成,最后它应该是break以便控制可以出来。输入应该添加到xml文件中。 我想做的是在while循环中: 要求用户输入如1的选项以插入AVP 2以删除,并输入3以退出: 如果用户输入1,则提供avp代码,其名称,类型等。 如果他插入2然后删除AVP(我不希望你们都回答这个请忽略删除操作) 如果他插入然后它将通过使用break退出

1 个答案:

答案 0 :(得分:-1)

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

享受!!!