使用argparse替换XML中的数字

时间:2016-03-16 10:43:40

标签: python xml argparse

假设我从终端提供参数: python xyz.py --values [ 2 4 5 ]。我想取这些数字并将其替换为XML文件,我该怎么做?

我的XML文件如下所示:

<DP>
  <NVP>
     <CHECK>NameX_1</CHECK>
     <DIGIT>3</DIGIT>
  </NVP>
  <NVP>
     <CHECK>NameX_2</CHECK>
     <DIGIT>20</DIGIT>
  </NVP>
  <NVP>
     <CHECK>NameX_2</CHECK>
     <DIGIT>100</DIGIT>
</DP>

当用户提供参数时,应该替换该XML中的数字。所以3 -> 2, 20 -> 42 -> 5

for digits in tree.findall(getDigit.format(namespace)):
    matchCheck = digits.find('{http://something.com}CHECK').text 
        if matchCheck == mathcName:
            digitNumber = digits.find('{http://something.com}DIGIT').text
            convertToString = ' '.join([str(mystring) for mystring in args.value]) #Convert to string

            digits.find('{http://something.com}DIGIT').text = convertToString #This allows the script to changes the digit in the xml file
            tree.write("test.xml", encoding='utf-8', xml_declaration=True)
        else: print"NO MATCHES\n"

您可以在此处找到其余代码:Code

1 个答案:

答案 0 :(得分:0)

目前还不清楚您的问题是关于argparse代码的结尾还是xml结束。

但是如果你定义

parser = argparse.ArgumentParser()
parser.add_argument('--values', nargs='+')
args = parser.parse_args()
values = args.values
print(values)

然后打电话(没有括号)

python xyz.py --values 2 4 5

应该打印

[2, 4, 5]

values将是3个数字的列表。您使用这三个数字执行的操作是代码的xml编辑部分的责任。