怎么使用PythonPython創(chuàng)建命令?
Python創(chuàng)建命令使其成為一種學(xué)習(xí)曲線平和的編程語(yǔ)言,有經(jīng)驗(yàn)的程序員甚至可能在一天之內(nèi)就掌握Python的基礎(chǔ)知識(shí),至多不過(guò)一周作用就可以上手,而編程語(yǔ)言的專家則肯定。
并帶有內(nèi)置的幫助菜單、錯(cuò)誤處理和選項(xiàng)處理。由于一些奇怪的原因,很多人并不了解 Python® 的標(biāo)準(zhǔn)庫(kù)具有制作功能極其強(qiáng)大的 *NIX 命令行工具所需的全部工具。 可以這樣說(shuō),Python 是制作 *NIX 命令行工具的最佳語(yǔ)言,因?yàn)樗勒铡癰atteries-included”的哲學(xué)方式工作,并且強(qiáng)調(diào)提供可讀性高的代碼。
但僅作為提醒,當(dāng)您發(fā)現(xiàn)使用 Python創(chuàng)建命令行工具是一件多么簡(jiǎn)單的事情時(shí),這些想法很危險(xiǎn),您的生活可能被攪得一團(tuán)糟。據(jù)我所知,至今還沒(méi)有發(fā)表過(guò)詳細(xì)說(shuō)明使用 Python創(chuàng)建命令行工具的文章。
因此我希望您喜歡這篇文章。Python 標(biāo)準(zhǔn)庫(kù)中的 optparse 模塊可完成創(chuàng)建命令行工具的大部分瑣碎工作。optparse 包含在 Python 2.3 中,因此該模塊將包括在許多 *NIX 操作系統(tǒng)中。#t#
如果由于某種原因,您使用的操作系統(tǒng)不包含所需要的模塊,那么值得慶幸的是,Python 的最新版本已經(jīng)過(guò)測(cè)試并編譯到幾乎任何 *NIX 操作系統(tǒng)中。Python 支持的系統(tǒng)包括 IBM® AIX®、HP-UX、Solaris、Free BSD、Red Hat Linux®、Ubuntu、OS X、IRIX,甚至包括幾種 Nokia 手機(jī)。
編寫(xiě)優(yōu)秀的命令行工具的第一步是定義要解決的問(wèn)題。這對(duì)您工具的成功至關(guān)重要。這對(duì)于以盡可能簡(jiǎn)單的方法解決問(wèn)題也同樣重要。這里明確地采用了 KISS(Keep It Simple Stupid,保持簡(jiǎn)單)準(zhǔn)則。只有在實(shí)現(xiàn)并測(cè)試了計(jì)劃內(nèi)功能之后才添加選項(xiàng)和增加其他功能。
我們首先從創(chuàng)建 Hello World 命令行工具開(kāi)始。按照上面的建議,我們使用盡可能簡(jiǎn)單的術(shù)語(yǔ)來(lái)定義問(wèn)題。問(wèn)題定義:我希望創(chuàng)建一個(gè)命令行工具,默認(rèn)打印 Hello World,并提供用于打印不通人的姓名的選項(xiàng)。 基于上述說(shuō)明,可以提供一個(gè)包含少量代碼的解決方案。
Hello World 命令行接口 (CLI):
- #!/usr/bin/env python
- import optparse
- def main():
- p = optparse.OptionParser()
- p.add_option('--person', '-p',
- default="world")
- options, arguments = p.parse_args() print 'Hello %s' % options.person
- if __name__ == '__main__':
- main()
但是,我們通過(guò)少量PPython創(chuàng)建命令所能做到的遠(yuǎn)不止于此。我們可以獲得自動(dòng)生成的幫助菜單。在這里,我們終于看到了Python中多線程機(jī)制的平臺(tái)相關(guān)性,在Python25\Python目錄下,有一大批thread_***.h這樣的文件,在這些文件中。
包裝了不同操作系統(tǒng)的原生線程,并通過(guò)統(tǒng)一的接口暴露給Python,比如這里的PyThread_allocate_lock就是這樣一個(gè)接口。我們這里的thread_nt.h中包裝的是Win32平臺(tái)的原生thread,在本章中后面的代碼剖析中,還會(huì)有大量與平臺(tái)相關(guān)的代碼,我們都以Win32平臺(tái)為例。