python命令行编程实例,食谱

时间:2010-12-20 23:15:42

标签: python command-line-interface

最近在工作中需要python命令行实用程序,我没有编写cli的经验。无论如何,我仍然必须将它们弹出。

我最大的障碍是这些计划的结构。此外,获取和验证来自用户的输入的方法。我一直在以非常宽松的循环结束,我只是不认为这是最有效的方法。

有人可以提供我可能选择的开源cli程序的链接以获得一些理解吗?或者,我可以得到的书籍,教程等。我已经挖了但没有成功(我的谷歌技能必须缺乏)。

4 个答案:

答案 0 :(得分:5)

我喜欢baker。你这样使用它:

% 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

答案 1 :(得分:4)

随机提示:

  • optionparser模块适用于解析复杂选项
  • 许多python模块确实是cli程序。请参阅此处(例如,请参阅python2.6/json/tool.py,您可以使用python -m json.tool
  • 运行

使用

是个好主意
 def main(arguments):
     etc.

 if __name__ == '__main__':
     # only if we are executed rather than imported as a module:
     import sys
     main(sys.argv)

这样,你可以通过简单地import来重用yor应用程序的各个部分

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果您可以使用python 2.7或3,或者期望可以访问它的公共环境,请考虑使用argparse而不是optparse。它为您提供与参数选项相同的控制optparse。

我个人不介意将所有解析放在if __name__ == '__main__'块中,如果它非常简单。

在您对Falmarri的回复的评论中,您在使用CLI程序时提到了广泛的用户交互 - 对我来说,这开始倾向于像标准库中的cmd那样的“面向行的命令解释器”,或者优秀的cmd2。循环使用手动解析的raw_input不同的行正在复制您可以从其中一个获得的一些功能。我也有兴趣看到你所描述的很好的例子。