python命令行编程示例、配方

python命令行编程示例、配方,python,command-line-interface,Python,Command Line Interface,最近工作中需要python命令行实用程序,我没有编写cli的经验。不管怎样,我还是要把它们拿出来 我最大的障碍是这些项目的结构。此外,还介绍了获取和验证用户输入的方法。我已经结束了很长的while循环,我只是不认为这是最有效的方法 是否有人可以提供指向开源cli程序的链接,我可以选择这些链接来了解一些情况?或者,我可以拿到的书、教程等。我四处寻找,但几乎没有什么成功(我的谷歌技能肯定是缺乏的)。几乎任何python脚本都可以是“命令行程序”。您有什么具体问题?随机提示: optionparse

最近工作中需要python命令行实用程序,我没有编写cli的经验。不管怎样,我还是要把它们拿出来

我最大的障碍是这些项目的结构。此外,还介绍了获取和验证用户输入的方法。我已经结束了很长的while循环,我只是不认为这是最有效的方法


是否有人可以提供指向开源cli程序的链接,我可以选择这些链接来了解一些情况?或者,我可以拿到的书、教程等。我四处寻找,但几乎没有什么成功(我的谷歌技能肯定是缺乏的)。

几乎任何python脚本都可以是“命令行程序”。您有什么具体问题?

随机提示:

  • optionparser
    模块适用于解析复杂选项
  • 许多python模块实际上都是cli程序。请参见此处(例如,请参见
    python2.6/json/tool.py
    ,您可以使用
    python-mjson.tool
    运行该工具)
这是一个好主意

 def main(arguments):
     etc.

 if __name__ == '__main__':
     # only if we are executed rather than imported as a module:
     import sys
     main(sys.argv)
这样,您的应用程序的各个部分就可以通过简单的
导入
来重复使用。你这样使用它:

% cat my.py
import baker


@baker.command
def cmd(start, end):
    print '%s %s' % (start, end)


if __name__ == '__main__':
    baker.run()

% python my.py cmd 2010-12-01 2010-12-31
2010-12-01 2010-12-31

如果您可以使用Python 2.7或3,或者期望可以访问的公共环境,请考虑AgPARSE而不是OpTPARSE。它提供了optpass对带有参数的选项的相同控制

我个人并不介意把所有的解析放在
if uuuu name uuu=='\uuuu main uuu'
块中,如果它非常简单的话


在您对Falmari回复的评论中,您提到了在使用CLI程序期间广泛的用户交互——对我来说,这已经开始向“面向行的命令解释器”靠拢,如标准库中的或优秀的。在手动解析的
原始输入
不同的行上循环正在复制您可以从其中一个中获得的一些功能。我还想看看您所描述内容的好例子。

Optionparser是我大部分代码的入口点。在调用main()以减少浪费的导入之前,我从未考虑过导入。一个例子是curl。它有一系列的选项、标志等。存储这些选项和决定程序流的好方法是什么?就像我有一堆存储的变量,它们执行main()中if-else逻辑的方法一样。或者有一种“标准”来处理这种情况。另一个例子是,假设我有两个数据库,我想从中比较条目。用户将被提示“如果”在做什么方面存在任何差异。他可以保留、删除或更改这些值。问题是,他必须了解差异,必须提供输入,并且输入必须经过验证。这一过程可以变得广泛。那么,你知道我可以从中挑选与本例范围类似的开源程序吗?这些都是非常具体的问题。你应该把你的问题限制在可以回答的范围内。