如何在Python中解析命令行参数?

13 投票
5 回答
21421 浏览
提问于 2025-04-16 01:12

可能重复的问题:
如何在Python脚本中获取和解析命令行参数?

我想在我的Python 2.6程序中解析命令行参数。

理想情况下,我希望能够处理以下情况:

# Show some help
./myprogram --help

# These are equivalent
./myprogram --block=1
./myprogram -b 1

# This means verbose, and twice as verbose:
./myprogram -v
./myprogram -vv

5 个回答

1

比那个链接更好的选择是OptParse或GetOpt这两个模块。根据你使用的Python版本,最新的版本,比如2.7和3.1.2,里面还有一个更新的模块。你可以在官方的python.org网站上找到这些模块的详细文档和示例。如果你去python.org,简单搜索一下OptParse或GetOpt,就能找到你需要的所有信息。

3

Python 自带了处理参数的功能,使用的是 getopt 模块。

这个模块可以处理长短两种形式的参数,还有“裸参数”和带参数的版本(比如 --help--num=7)。

根据你的具体需求(稍微复杂一点),你可能会用到类似这样的代码:

opts,args = getopt.getopt(argv,"b:vVh",["block=", "verbose", "very-verbose", "help"])

我不太确定它是否支持像 -vv 这样的多字符单短横线参数。为了简化我的操作,我通常会使用 -v-V

33

可以看看 argparse 模块(如果你用的是旧版 Python,可以看看 optparse)。
要注意的是,argparseoptparse 是比 getopt 更新、更好的选择,所以如果你是新手,推荐使用这两个模块。从 getopt 的文档中可以了解到:

注意:getopt 模块是一个用于解析命令行选项的工具,它的设计让使用过 C 语言中 getopt() 函数的用户感到熟悉。如果你不熟悉 C 语言的 getopt() 函数,或者想写更少的代码并获得更好的帮助和错误信息,建议使用 argparse 模块。

撰写回答