解析Python Cmd模块中的参数

发布于 2024-10-10 22:10:47 字数 510 浏览 2 评论 0原文

我正在使用 Cmd 模块用 Python 编写一个命令行工具。

我希望能够发出以下命令:

resize -file all -height 100 -width 200 -type jpeg

resize -file 'a file.jpg' -type png -height 50 -width 50

[编辑] 要明确的是,上述命令是要输入到我的命令行应用程序中,而不是从终端输入。上面的行将调用我的 Cmd 模块的 do_resize(self, line) 方法,并将参数作为字符串传递。因此,OptParse 和 argparse 不执行我需要的操作,因为它们似乎只从 sys.argv 获取参数。

有些参数是必需的,有些是可选的。当使用另一些时,一些就变得必需了。

解析参数字符串的最佳方法是什么?我读过Python中的一些工具可以使这变得简单,但我不确定我在寻找什么。

I am writing a command line tool in Python using the Cmd module.

I want to be able to issue commands such as:

resize -file all -height 100 -width 200 -type jpeg

or

resize -file 'a file.jpg' -type png -height 50 -width 50

[edit] To be clear the above command is to be enter into my command line application NOT from the terminal. The line above would call the do_resize(self, line) method of my Cmd module and pass in the parameters as a string. For this reason OptParse and argparse don't do what I need as they appear to only get paramters from sys.argv.

Some parameters are required, some are optional. Some become required when others are used.

What is the best way to parse the parameter string? I have read there are tools in Python that make this easy but I'm not sure what I'm look for.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一梦等七年七年为一梦 2024-10-17 22:10:47

您正在寻找 optparse (argparse for python 2.7+)

编辑: 事实上根据this 文档部分,您可以调用函数 parse_args 传递参数列表,该列表默认(但不是限制为) sys.argv[1:]

因此,如果您有 args_str = '-file all -height 100 -width 200 -type jpeg' 您可以调用parser.parse_args(args_str.split()) 它会正确解析选项。

you are looking for optparse (argparse for python 2.7+)

edit: In fact according to this section of docs, you can call function parse_args passing a list of arguments, which defults (but not limits to) sys.argv[1:]

So, if you have for example args_str = '-file all -height 100 -width 200 -type jpeg' you can call parser.parse_args(args_str.split()) and it will parse correctly the options.

碍人泪离人颜 2024-10-17 22:10:47

最好的选择是 argparse 模块。

Best option is the argparse module.

唐婉 2024-10-17 22:10:47

我喜欢 getopt 因为它很简单。

I love getopt because it is simple.

童话里做英雄 2024-10-17 22:10:47

shlex 模块怎么样。我想正是为了这个目的。

How about the shlex module. I think it is exactly for this purpose.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文