1
154
这个答案表明
正如其他人指出的那样,你最好是和optparse一起而不是getopt。getopt几乎是标准getopt(3)c库函数的一对一映射,而且不太容易使用。 optparse虽然有点冗长,但它的结构要好得多,在以后的扩展中也更简单。 下面是一个典型的向解析器添加选项的行:
它基本上说明了它自己;在处理时,它将接受-q或--query作为选项,将参数存储在一个名为query的属性中,如果不指定该属性,则具有默认值。它也是自文档化的,因为您声明了帮助参数(与-h/--help一起运行时将使用该参数)和选项。 通常,您用以下方式分析参数:
默认情况下,这将分析传递给脚本的标准参数(sys.argv[1:] 然后,options.query将被设置为传递给脚本的值。 只需通过执行
这些都是你需要的基础。下面是一个完整的python脚本,其中显示了:
5行python,向您展示基础知识。 将其保存在sample.py中,并使用
一次与
除此之外,您将发现optparse非常容易扩展。 在我的一个项目中,我创建了一个命令类,它允许您轻松地在命令树中嵌套子命令。它大量使用optparse将命令链接在一起。这不是我能用几句话轻易解释的事情,但请放心 browse around in my repository 对于主班,以及 a class that uses it and the option parser |
2
146
其他答案确实提到了
1)初始化
2)添加参数
3)解析
4)访问权限
5)检查值
用法正确使用:
参数不正确:
完全帮助:
|
3
61
使用DOCOPT自2012年以来,python拥有非常简单、强大和 凉爽的 调用了用于参数分析的模块 docopt . 它与Python2.6到3.5一起工作,不需要安装(只需复制它)。以下是从IT文档中获取的示例:
就是这样:2行代码加上您的文档字符串 是 基本的,您可以在arguments对象中分析和使用参数。我告诉过你这很酷,不是吗;-) 使用python fire
2017以来
python-fire
有另一个很酷的模块,它可以为您的代码提供一个cli接口。
零
参数分析。以下是文档中的一个简单示例(这个小程序公开了函数
在命令行中,可以运行:
太棒了,不是吗? |
4
36
|
5
15
几乎每个人都在使用 getopt 以下是文档的示例代码:
总之,这就是它的工作原理。 你有两种选择。接受争论的人 就像开关一样。
终于
结果是一个夫妇列表(选项、参数)
如果选项不接受任何参数(如
我希望这对你有帮助。 |
6
15
我更喜欢 Click . 它抽象了管理选项,并允许“(…)以一种可组合的方式创建漂亮的命令行接口,只需要很少的代码”。 以下是示例用法:
它还自动生成格式良好的帮助页面:
|
7
14
使用
来源: Using Python to create UNIX command line tools 但是,从python 2.7开始,optparse已被弃用,请参见: Why use argparse rather than optparse? |
8
6
以防万一,如果你需要的话,这可能会有所帮助。 抓住 Win32(2K、XP等)上的Unicode参数:
|
9
6
轻型命令行参数默认值
虽然
'name'参数捕获脚本名,未使用。测试输出如下:
对于我只需要一些默认值的简单脚本,我发现这已经足够了。您可能还希望在返回值中包含一些类型强制,或者命令行值都是字符串。 |
10
4
我认为大型项目的最佳方法是optparse,但是如果你想找一个简单的方法,也许 http://werkzeug.pocoo.org/documentation/script 是给你的。
所以基本上,每个函数操作都暴露在命令行中, 帮助消息是免费生成的。
|
11
3
我更喜欢optparse而不是getopt。它是非常声明性的:你告诉它选项的名称和它们应该具有的效果(例如,设置一个布尔字段),然后它会返回一个根据你的规范填充的字典。 |
12
2
consoleargs 这里值得一提。它很容易使用。过来看:
现在在控制台:
|
13
1
argparse代码不能长于实际的实现代码! 我发现,对于大多数流行的参数解析选项来说,这是一个问题,即如果您的参数只是适度的,那么用来记录它们的代码将变得非常大,不足以满足它们所提供的好处。 我认为,对论点解析场景的一个相对新的接触是 plac .
它与argparse进行了一些公认的权衡,但使用内联文档并简单地进行包装
|
14
0
这是一个方法,而不是一个图书馆,它似乎对我有用。 这里的目标是简明扼要,每一个参数都由一行来解析,args为可读性而排列,代码很简单,不依赖任何特殊模块(仅OS+sys),优雅地警告丢失或未知参数,使用简单的for/range()循环,并在python 2.x和3.x上工作。 显示了两个切换标志(-d,-v)和两个由参数控制的值(-i xxx和-o xxx)。
nextarg()的目标是在检查丢失的数据时返回下一个参数,并且当使用nextarg()时,“skip”跳过循环,将标志解析保持在一行中。 |
15
0
我扩展了erco的方法,允许使用必需的位置参数和可选参数。这些应该在-d、-v等参数之前。 位置参数和可选参数可以分别用posarg(i)和optarg(i,默认)检索。 当找到可选参数时,搜索选项(例如-i)的起始位置将向前移动1,以避免导致“意外”致命错误。
|
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |