使用optparse接受参数的大多数pythonic方式

时间:2012-08-31 20:55:06

标签: python arguments command-line-arguments argparse optparse

我目前有一个python文件,它利用sys.argv [1]在命令行接受一个字符串。然后,它对该字符串执行操作,然后将修改后的字符串返回到命令行。

我想实现一个批处理模式选项,我可以在其中提供一个字符串文件(每行一个,fwiw)并让它返回到命令行,以便我可以重定向输出,如

$ python script.py -someflag file.txt > modified.txt 

同时仍然保留当前的能力。

我只运行2.6,所以argparse不是一个选项。我看过的教程要么使用argparse,要么使用getopt,要么深入研究过于复杂/不适用的示例。

检查输入并采取适当行动的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

argparse仍然是一个选项,它只是没有内置到2.6中。您仍然可以像任何第三方软件包一样安装它(例如,使用easy_install argparse)。

这方面的代码示例如下:

import sys
import argparse

p = argparse.ArgumentParser(description="script.py")
p.add_argument("-s", dest="string")
p.add_argument("-f", dest="infile")

args = p.parse_args()

if args.infile == None and args.string == None:
    print "Must be given either a string or a file"
    sys.exit(1)
if args.infile != None and args.string != None:
    print "Must be given either a string or a file, not both"
    sys.exit(1)
if args.infile:
    # process the input file one string at a time
if args.string:
    # process the single string

答案 1 :(得分:3)

请在此处查看我的回答:What's the best way to grab/parse command line arguments passed to a Python script?

作为捷径,这里有一些示例代码:

import optparse

parser = optparse.OptionParser()

parser.add_option('-q', '--query',
    action="store", dest="query",
    help="query string", default="spam")

options, args = parser.parse_args()

print 'Query string:', options.query