我有以下代码,我试图将其作为参数。a.py:-
import sys
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
#location for the xml file where parsing is required
param1 = sys.argv[1]
#parent tag of new tag
param2 = sys.argv[2]
param3 = sys.argv[3]
param4 = sys.argv[4]
print(param3)
#parse the config file
tree = ET.parse(param1)
#get the root of config file
root = tree.getroot()
#add element exactly at particular point
tar = param2
#this will find the root tag
target = tree.find(tar)
#new tag required to be inserted
seq = param3
#taking new tag element in element tree
temp = ET.Element(seq)
#insert the position where you want to enter
i = int(param4)
target.insert(i,temp)
temp.tail = '\n'
tree.write(param1,encoding='utf-8')
和另一个文件来获取b.py形式的参数:-
#!/usr/bin/python
import socket
import xmlparser.py
host1 = socket.getfqdn()
print(host1)
param1 = 'config.xml'
param2 = 'Target'
param3 = 'Attribute NAME="A" VALUE="((host={0},ip=123.0.0.0,port=22),(host=
{0}, port=11),(host={0}, port=162))"'.format(host1)
param4 = 3
python xmlparser.py param1 param2 param3 param4
当我运行"python b.py“时,我得到的错误是无效的语法,有没有人能建议一下错误是什么?
发布于 2018-06-26 03:43:21
您需要做的是将第一个文件的代码作为函数,并调用下一个文件,如下所示-
import xml.etree.cElementTree as ET
import xml.etree.ElementTree as ET
def parser(p1,p2,p3,p4):
param1 = p1
param2 = p2
param3 = p3
param4 = p4
print(param3)
tree = ET.parse(param1)
root = tree.getroot()
tar = param2
target = tree.find(tar)
seq = param3
temp = ET.Element(seq)
i = int(param4)
target.insert(i,temp)
temp.tail = '\n'
tree.write(param1,encoding='utf-8')
然后在第二个文件中调用它,如下所示
import socket
import xmlparser
host1 = socket.getfqdn()
print(host1)
param1 = 'config.xml'
param2 = 'Target'
param3 = 'Attribute NAME="A" VALUE="((host={0},ip=123.0.0.0,port=22),(host= {0}, port=11),(host={0}, port=162))"'.format(host1)
param4 = 3
xmlparser.parser(param1,param2,param3,param4)
这应该是可行的。
此外,避免使用try进行导入,如果导入无论如何都不成功,这将导致问题,从而失去目的。
发布于 2018-06-26 05:00:42
您的问题是最后一部分是shell命令,而不是python,所以它是无效语法。
如果您想要提供一个shell命令,那么在bash中使用您的测试函数来执行它会更好:
#!/usr/bin/bash
host1="$(hostname -A)"
echo $host1
param1='config.xml'
param2='Target'
param3='Attribute NAME="A" VALUE="((host={0},ip=123.0.0.0,port=22),(host=
'"$host1"', port=11),(host={0}, port=162))"'
param4=3
python xmlparser.py "$param1" "$param2" "$param3" "$param4"
您还可以在python代码中使用subprocess.popen。
https://stackoverflow.com/questions/51030613
复制相似问题