我正在用python寫一個CLI應用程序,通過一種相當複雜的命令行語言來使用。這個想法與找到(1)非常相似,可以說它具有相同的屬性。Python:解析命令行
目前,解析器是使用手工EBNF描述語言完全手寫的。問題是這種語言使用起來非常尷尬,因爲我必須將所有東西都寫成python結構。我也覺得我的程序由於解析而仍然過於臃腫。
是否有任何使用易用的lib,以及用於命令行解析的真正描述語言(輸入爲字符串/文檔)?從語法樹中,我想直接將每個項目映射到一個類實例。當然,我不想要標記器,或者至少標記器必須從命令行參數直接映射到標記。
感謝您的所有建議!
UPDATE:我的程序的全部要點是生成對象,並通過任何數量的過濾器(可能unpure/effectful動作)通過他們可能會或可能不會輸出再次對象,或另一甚至可能會輸出對象類型。從find(1)中顯然可以看出總體思路。一個命令行示例如下:
~/picdb.py -sqlselect 'select * from pics where dirname like "testdir%"' -tagged JoSo -updateFromFile [ -resx +300 -or -resX +200 -resY +500 ] -printfXml '<jpegfile><src>%fp</src><DateTimeOriginal>%ed</DateTimeOriginal><Manufacturer>%eM</Manufacturer><Model>%em</Model></jpegfile>%NL'
[argparse](http://docs.python.org/library/argparse.html#module-argparse)(python 2.7+)會滿足您的需求嗎? – Aufwind 2012-04-28 14:00:57
除了@Aufwind的評論 - 你不需要*擁有python 2.7或更新的用戶argparse。它適用於老版本的python - 你只需要自己安裝(而不是被包含在標準庫中)。 – mgilson 2012-04-28 15:52:31
我認爲,如果你描述了你的命令行(或者至少給出了一個或兩個例子),我們可能會看到這是否是一個候選人/ optparse ... – mgilson 2012-04-28 15:53:41