Skip to main content
 首页 » 编程设计

python之如何在 python 中实现命令行函数的选项/参数

2025年05月04日14mengfanrong

我的 python 版本是 2.4.3。

现在我正在为 CD 播放器开发一个带有 python cmd 模块的 CLI。我有一些类,如 CDContainer(具有 addCD、removeCD 等方法)、CD(具有播放、停止、暂停等方法)。现在,我想为命令添加一些选项,而且如果选项输入不正确,CLI 可以返回有关错误输入类型或错误值的正确信息。例如,我想要“addcd --track 3 --cdname thriller”。我现在做的是通过 获取所有参数,将其拆分,并将其分配给相关变量,如下所示。

我的问题是在 python 中,是否有一些模块可以方便地解析和分析选项或参数?

修订:好的,我编辑它,感谢 gclj5 评论。

import cmd 
class CDContainerCLI(cmd.Cmd): 
 
    def do_addcd(self, line): 
        args=line.split() 
        parser = OptionParser() 
        parser.add_option("-t", "--track", dest="track_number", type="int", 
            help="track number") 
        parser.add_option("-n", "--cdname", dest="cd_name", type="string", 
            help="CD name") 
        (options, positional_args) = parser.parse_args(args) 
        cd_obj= CD() 
        cd_obj.addCD(options.track_number, options.cd_name) 

如果可能的话,你能写一些代码示例,只是为了展示如何去做吗?

非常感谢!!

请您参考如下方法:

根据您的 Python 版本,您应该查看 optparse (自 2.3 版起,自 2.7 版起弃用)或 argparse (从 2.7 版开始)。

一些使用 optparse 的示例代码(line 是您在 CLI 中从标准输入读取的字符串):

from optparse import OptionParser 
 
args = line.split() 
 
parser = OptionParser() 
parser.add_option("-t", "--track", dest="track_number", type="int", 
                  help="track number") 
parser.add_option("-n", "--cdname", dest="cd_name", type="string", 
                  help="CD name") 
 
# args[0] contains the actual command ("addcd" in this example). 
(options, positional_args) = add_cd_parser.parse_args(args[1:]) 
 
if options.track_number != None and options.cd_name != None: 
    cd_obj= CD() 
    cd_obj.addCD(options.track_number, options.cd_name) 
    print "add CD (track %d, name %s)" % (options.track_number, options.cd_name) 

此解析器仅处理您的“addcd”命令。例如,对于更多命令,您可以在字典中使用多个 OptionParser 对象,并以命令名称作为键。你可以像这样解析选项:

(options, args) = parsers[args[0]].parse_args(args[1:]) 

查看 optparse 的文档以获取更多信息。例如,输出使用信息非常容易。还有一个tutorial可用。