同步操作将从 OpenHarmony-SIG/python 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
"""Parser for command line options.This module helps scripts to parse the command line arguments insys.argv. It supports the same conventions as the Unix getopt()function (including the special meanings of arguments of the form `-'and `--'). Long options similar to those supported by GNU softwaremay be used as well via an optional third argument. This moduleprovides two functions and an exception:getopt() -- Parse command line optionsgnu_getopt() -- Like getopt(), but allow option and non-option argumentsto be intermixed.GetoptError -- exception (class) raised with 'opt' attribute, which is theoption involved with the exception."""# Long option support added by Lars Wirzenius <liw@iki.fi>.## Gerrit Holl <gerrit@nl.linux.org> moved the string-based exceptions# to class-based exceptions.## Peter Åstrand <astrand@lysator.liu.se> added gnu_getopt().## TODO for gnu_getopt():## - GNU getopt_long_only mechanism# - allow the caller to specify ordering# - RETURN_IN_ORDER option# - GNU extension with '-' as first character of option string# - optional arguments, specified by double colons# - an option string with a W followed by semicolon should# treat "-W foo" as "--foo"__all__ = ["GetoptError","error","getopt","gnu_getopt"]import ostry:from gettext import gettext as _except ImportError:# Bootstrapping Python: gettext's dependencies not built yetdef _(s): return sclass GetoptError(Exception):opt = ''msg = ''def __init__(self, msg, opt=''):self.msg = msgself.opt = optException.__init__(self, msg, opt)def __str__(self):return self.msgerror = GetoptError # backward compatibilitydef getopt(args, shortopts, longopts = []):"""getopt(args, options[, long_options]) -> opts, argsParses command line options and parameter list. args is theargument list to be parsed, without the leading reference to therunning program. Typically, this means "sys.argv[1:]". shortoptsis the string of option letters that the script wants torecognize, with options that require an argument followed by acolon (i.e., the same format that Unix getopt() uses). Ifspecified, longopts is a list of strings with the names of thelong options which should be supported. The leading '--'characters should not be included in the option name. Optionswhich require an argument should be followed by an equal sign('=').The return value consists of two elements: the first is a list of(option, value) pairs; the second is the list of program argumentsleft after the option list was stripped (this is a trailing sliceof the first argument). Each option-and-value pair returned hasthe option as its first element, prefixed with a hyphen (e.g.,'-x'), and the option argument as its second element, or an emptystring if the option has no argument. The options occur in thelist in the same order in which they were found, thus allowingmultiple occurrences. Long and short options may be mixed."""opts = []if type(longopts) == type(""):longopts = [longopts]else:longopts = list(longopts)while args and args[0].startswith('-') and args[0] != '-':if args[0] == '--':args = args[1:]breakif args[0].startswith('--'):opts, args = do_longs(opts, args[0][2:], longopts, args[1:])else:opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])return opts, argsdef gnu_getopt(args, shortopts, longopts = []):"""getopt(args, options[, long_options]) -> opts, argsThis function works like getopt(), except that GNU style scanningmode is used by default. This means that option and non-optionarguments may be intermixed. The getopt() function stopsprocessing options as soon as a non-option argument isencountered.If the first character of the option string is `+', or if theenvironment variable POSIXLY_CORRECT is set, then optionprocessing stops as soon as a non-option argument is encountered."""opts = []prog_args = []if isinstance(longopts, str):longopts = [longopts]else:longopts = list(longopts)# Allow options after non-option arguments?if shortopts.startswith('+'):shortopts = shortopts[1:]all_options_first = Trueelif os.environ.get("POSIXLY_CORRECT"):all_options_first = Trueelse:all_options_first = Falsewhile args:if args[0] == '--':prog_args += args[1:]breakif args[0][:2] == '--':opts, args = do_longs(opts, args[0][2:], longopts, args[1:])elif args[0][:1] == '-' and args[0] != '-':opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])else:if all_options_first:prog_args += argsbreakelse:prog_args.append(args[0])args = args[1:]return opts, prog_argsdef do_longs(opts, opt, longopts, args):try:i = opt.index('=')except ValueError:optarg = Noneelse:opt, optarg = opt[:i], opt[i+1:]has_arg, opt = long_has_args(opt, longopts)if has_arg:if optarg is None:if not args:raise GetoptError(_('option --%s requires argument') % opt, opt)optarg, args = args[0], args[1:]elif optarg is not None:raise GetoptError(_('option --%s must not have an argument') % opt, opt)opts.append(('--' + opt, optarg or ''))return opts, args# Return:# has_arg?# full option namedef long_has_args(opt, longopts):possibilities = [o for o in longopts if o.startswith(opt)]if not possibilities:raise GetoptError(_('option --%s not recognized') % opt, opt)# Is there an exact match?if opt in possibilities:return False, optelif opt + '=' in possibilities:return True, opt# No exact match, so better be unique.if len(possibilities) > 1:# XXX since possibilities contains all valid continuations, might be# nice to work them into the error msgraise GetoptError(_('option --%s not a unique prefix') % opt, opt)assert len(possibilities) == 1unique_match = possibilities[0]has_arg = unique_match.endswith('=')if has_arg:unique_match = unique_match[:-1]return has_arg, unique_matchdef do_shorts(opts, optstring, shortopts, args):while optstring != '':opt, optstring = optstring[0], optstring[1:]if short_has_arg(opt, shortopts):if optstring == '':if not args:raise GetoptError(_('option -%s requires argument') % opt,opt)optstring, args = args[0], args[1:]optarg, optstring = optstring, ''else:optarg = ''opts.append(('-' + opt, optarg))return opts, argsdef short_has_arg(opt, shortopts):for i in range(len(shortopts)):if opt == shortopts[i] != ':':return shortopts.startswith(':', i+1)raise GetoptError(_('option -%s not recognized') % opt, opt)if __name__ == '__main__':import sysprint(getopt(sys.argv[1:], "a:b", ["alpha=", "beta"]))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。