如何在Python 2.6中解析带有前缀选项“-f file.xml”的参数

3

我希望能够解析从命令行传递的参数,以选项前缀为:

python myApp.y -f file.xml

我正在使用Python 2.6.6,因此无法使用 argparse

我希望这个方法能够更加通用和可扩展,而不仅仅是一个单独的脚本。

arg1 = sys.argv[1]
arg2 = sys.argv[2]

然后使用if语句来检查这些值是否已经被提供。


检查是否安装了 getopt。 - jeffmurphy
@jeffmurphy -- getopt 是 Python 标准库的一部分,但我并没有看到使用它的好理由,因为 argparse 和 optparse 都更容易使用... - mgilson
因为它回答了OP的问题,而根据OP的说法,argparse没有。 - jeffmurphy
@jeffmurphy -- 但是 optparse 确实(而且仍然比 getopt 好得多)。 - mgilson
@mgilson 已被废弃,作为奖励。 - jeffmurphy
1个回答

8
你可以使用optparse,但是argparse 也可用并且可以轻松安装在python 2.6上。
以下是如何使用argparse:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-f','--filename',action='store',help='file!')
namespace = parser.parse_args()
print namespace.filename

或者使用optparse:
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--filename", dest="filename",help="file!")
options, args = parser.parse_args()
print options.filename

非常感谢您提供的这些示例! - Patryk
@Patryk -- 第二个代码片段基本上是从optparse文档中直接摘取的,因为我对那个库不太熟悉。我真的很推荐使用argparse。他们之所以弃用optparse而选择argparse(主要是因为argparse非常棒) :-) - mgilson
我知道,但对于我的需求来说这已经足够了,并且我在预配置的机器上工作,因此在所有机器上安装模块是有问题的。 - Patryk
@Patryk -- 很好,这就是为什么我在我的回答中给出了两个选项的原因。 - mgilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接