首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何跳过python命令行参数中的空格和空格?

如何跳过python命令行参数中的空格和空格?
EN

Stack Overflow用户
提问于 2018-06-26 03:28:34
回答 2查看 117关注 0票数 0

我有以下代码,我试图将其作为参数。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“时,我得到的错误是无效的语法,有没有人能建议一下错误是什么?

EN

回答 2

Stack Overflow用户

发布于 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进行导入,如果导入无论如何都不成功,这将导致问题,从而失去目的。

票数 0
EN

Stack Overflow用户

发布于 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51030613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档