XML文件作为命令行参数和Python中的解析

时间:2013-04-24 04:11:34

标签: python xml xml-parsing

我试图在Python中解析命令行参数,如下所示:

python test.py /home/Desktop/test.xml

我发现了getopt,但是如何处理三个参数呢?这个来源只显示4,我不知道怎么少。 http://www.tutorialspoint.com/python/python_command_line_arguments.htm

DOM是解析XML文件的最有效方法吗?

2 个答案:

答案 0 :(得分:1)

我会放弃getopt支持argparse,它有一个非常好的教程hereargparse以较少的工作显示出更好的错误。我认为getopt主要用于与C API兼容。但是,两个模块支持的参数较少。在您的特定情况下,您可能希望执行以下操作

import argparse

def parse_args():
    parser = argparse.ArgumentParser(usage)
    help = "The file to operate on"
    parser.add_argument("infile", type=argparse.FileType('r'), help=help)
    args = parser.parse_args()
    return args.infile

根据您的需要,lxml可能非常有用/强大。我个人使用BeautifulSoup(对于一些不那么复杂的XML内容)。标准库中推荐的模块是ElementTree,它有一个很好的API,可以做很多XML事情。

修改getopt 已弃用,因为我之前错误地说明了

答案 1 :(得分:0)

单个命令行参数是一个简单的例子,不需要getopt或其他解析模块。 尝试将最后一个参数用作文件名,以便在任何XML库中使用。

对于pythonic XML处理,请使用ElementTree

import sys
import xml.etree.ElementTree as ET

if __name__ == '__main__':
    print 'args:', sys.argv
    print 'last arg:', sys.argv[-1]
    if len(sys.argv) <= 1:
        sys.exit()
    tree = ET.parse(sys.argv[-1])
    root = tree.getroot()
    for child in root:
        print child.tag, child.text

(理解基础后添加文件存在检查和错误处理)。