0

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

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

我找到了 getopt,但是这如何与三个参数一起工作?这个来源只显示4,我不知道如何减少。http://www.tutorialspoint.com/python/python_command_line_arguments.htm

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

4

2 回答 2

1

我会放弃getoptargparse 这里有一个很好的教程。argparse以更少的工作显示更好的错误。我认为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推荐使用,因为我之前错误地陈述过

于 2013-04-24T04:37:13.193 回答
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

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

于 2013-04-24T05:18:25.927 回答