2011-01-10 66 views
2

我正在使用Cmd模塊在Python中編寫命令行工具。在Python Cmd模塊中解析參數

我希望能夠發出這樣的命令:

resize -file all -height 100 -width 200 -type jpeg 

resize -file 'a file.jpg' -type png -height 50 -width 50 

[編輯]要清楚上面的命令是要進入我的命令行應用程序不終點站。上面的代碼會調用我的Cmd模塊的do_resize(self,line)方法,並以字符串形式傳遞參數。出於這個原因,OptParse和argparse不會做我所需要的,因爲它們似乎只從sys.argv獲取參數。

一些參數是必需的,一些是可選的。當其他人被使用時,一些變得需要。

什麼是解析參數字符串的最佳方法?我已經閱讀了Python中的工具,這使得這很容易,但我不知道我在找什麼。

+0

`getopt`呢? http://docs.python.org/library/getopt.html – joksnet 2011-01-10 12:08:34

+0

或者另類`argparse`:http://docs.python.org/library/argparse.html – joksnet 2011-01-10 12:10:07

回答

7

您正在尋找optparseargparse爲Python 2.7+)

編輯:根據文檔的this部分事實上,你可以調用函數parse_args傳遞的參數列表,其中defults(但不限制)sys.argv[1:]

所以,如果你有例如args_str = '-file all -height 100 -width 200 -type jpeg'你可以撥打parser.parse_args(args_str.split()),它會正確解析選項。

+0

關於第二個想法,我不認爲這是我正在尋找。據我可以看到這些只從sys.argv獲取參數,而我試圖從運行時輸入到我的Cmd模塊的字符串中獲取它們。看到我上面的編輯。 – 2011-01-10 12:50:12

0

shlex模塊如何?我認爲這正是爲了這個目的。