python的parse用法_Python 里边的parser用法

2011-8-23

Python 里边的parser用法

15.5. optparse — Parser for command

line options

http://docs.python.org/library/optparse.html

Here’s an example of using optparse in a simple script:

from optparse import OptionParser

[...]

parser = OptionParser()

parser.add_option("-f", "--file", dest="filename",

help="write report to FILE", metavar="FILE")

parser.add_option("-q", "--quiet",

action="store_false", dest="verbose", default=True,

help="don't print status messages to stdout")

(options, args) = parser.parse_args()

With these few lines of code, users of your script can now do the “usual thing” on the command-line, for example:

--file=outfile -q

Thus, the following command lines are all equivalent to the above example:

-f outfile --quiet

--quiet --file outfile

-q -foutfile

-qfoutfile

Additionally, users can run one of

-h

--help

and optparse will print out a brief summary of your script’s options:

Usage: [options]

Options:

-h, --help            show this help message and exit

-f FILE, --file=FILE  write report to FILE

-q, --quiet           don't print status messages to stdout

where the value of yourscript is determined at runtime (normally fromsys.argv[0]).

15.5.1.1. Terminology

argument

a string entered on the command-line, and passed by the shell to execl() orexecv(). In Python, arguments are elements of sys.argv[1:] (sys.argv[0] is the name of the program being executed). Unix shells also use the term “word”.

It is occasionally desirable to substitute an argument list other thansys.argv[1:], so you should read “argument” as “an element of sys.argv[1:], or of some other list provided as a substitute for sys.argv[1:]“.

option

an argument used to supply extra information to guide or customize the execution of a program. There are many different syntaxes for options; the traditional Unix syntax is a hyphen (“-“) followed by a single letter, e.g. -x or -F. Also, traditional Unix syntax allows multiple options to be merged into a single argument, e.g. -x -F is equivalent to -xF. The GNU project introduced -- followed by a series of hyphen-separated words, e.g.--file or --dry-run. These are the only two option syntaxes provided byoptparse.

Some other option syntaxes that the world has seen include:

·   a hyphen followed by a few letters, e.g. -pf (this is not the same as multiple options merged into a single argument)

·   a hyphen followed by a whole word, e.g. -file (this is technically equivalent to the previous syntax, but they aren’t usually seen in the same program)

·   a plus sign followed by a single letter, or a few letters, or a word, e.g. +f, +rgb

·   a slash followed by a letter, or a few letters, or a word, e.g. /f,/file

These option syntaxes are not supported by optparse, and they never will be. This is deliberate: the first three are non-standard on any environment, and the last only makes sense if you’re exclusively targeting VMS, MS-DOS, and/or Windows.

option argument

an argument that follows an option, is closely associated with that option, and is consumed from the argument list when that option is. Withoptparse, option arguments may either be in a separate argument from their option:

-f foo

--file foo

or included in the same argument:

-ffoo

--file=foo

Typically, a given option either takes an argument or it doesn’t. Lots of people want an “optional option arguments” feature, meaning that some options will take an argument if they see it, and won’t if they don’t. This is somewhat controversial, because it makes parsing ambiguous: if -atakes an optional argument and -b is another option entirely, how do we interpret -ab? Because of this ambiguity, optparse does not support this feature.

positional argument

something leftover in the argument list after options have been parsed, i.e. after options and their arguments have been parsed and removed from the argument list.

required option

an option that must be supplied on the command-line; note that the phrase “required option” is self-contradictory in English. optparse doesn’t prevent you from implementing required options, but doesn’t give you much help at it either.

For example, consider this hypothetical command-line:

prog -v --report /tmp/report.txt foo bar

-v and --report are both options. Assuming that --report takes one argument,/tmp/report.txt is an option argument. foo and bar are positional arguments.

15.5.2. Tutorial

While optparse is quite flexible and powerful, it’s also straightforward to use in most cases. This section covers the code patterns that are common to any optparse-based program.

First, you need to import the OptionParser class; then, early in the main program, create an OptionParser instance:

from optparse import OptionParser

[...]

parser = OptionParser()

Then you can start defining options. The basic syntax is:

parser.add_option(opt_str, ...,

attr=value, ...)

Each option has one or more option strings, such as -f or --file, and several option attributes that tell optparse what to expect and what to do when it encounters that option on the command line.

Typically, each option will have one short option string and one long option string, e.g.:

parser.add_option("-f", "--file", ...)

You’re free to define as many short option strings and as many long option strings as you like (including zero), as long as there is at least one option string overall.

The option strings passed to add_option() are effectively labels for the option defined by that call. For brevity, we will frequently refer to encountering an option on the command line; in reality, optparse encounters option strings and looks up options from them.

Once all of your options are defined, instruct optparse to parse your program’s command line:

(options, args) = parser.parse_args()

(If you like, you can pass a custom argument list to parse_args(), but that’s rarely necessary: by default it uses sys.argv[1:].)

parse_args() returns two values:

options, an object containing values for all of your options—e.g. if --filetakes a single string argument, then options.file will be the filename supplied by the user, or None if the user did not supply that option

args, the list of positional arguments leftover after parsing options

This tutorial section only covers the four most important option attributes:action, type, dest (destination), and help. Of these, action is the most fundamental.

OK,that is enough for me to realize the GNU RADIO’s code. If I have extra time, I will continue to learn it.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值