0
我有一個個人腳本,我正在嘗試編寫,並且遇到了一個小問題。問題是,無論論點在哪裏,我都希望能夠支持'-s'的論點。我也希望這個論點不止一次被允許。例如:
script.py firstargument secondargument -s thirdargument -s第四第五第六-s
我已經試過是行不通的。我已經試過如下:
currentArg = 1
foldername = sys.argv[1:]
for folders in foldername:
if "-s" in folders:
newArg = currentArg + 1
setType = str(sys.argv[newArg])
function(setType)
它在做什麼是它的服用-s作爲參數,並仍通過對函數。什麼我喜歡它上面是看到第一「-S」是在第四位置時,添加1至4,然後的setType設爲sys.argv中[5]。我還希望它繼續遍歷參數並找到任何'-s',然後使用下一個參數作爲值。有任何想法嗎?
,我得到的錯誤是:
WindowsError: [Error 3] The system cannot find the path specified: 'c:\\-s/*.*'
聲明,它認爲-s作爲參數,並試圖通過,作爲一個文件夾,但我希望它傳遞一個參數作爲文件夾.. 。
是否有這樣做的更好的辦法?我需要採取一切「-s」考慮......
你應該看看argparse HTTP:// docs.python.org/2/howto/argparse.html – monkut
你有沒有使用Python附帶的'argparse'模塊?爲什麼要養一隻狗,然後吠叫自己? –
Argparse似乎不允許我在沒有 - 符號的情況下傳遞選項。換句話說,當我通過以下命令時出現錯誤:
argparse是美麗的。重新設計您的命令行界面或編寫您自己的CLI解析器。 CLI例如:
執行的結果:
來源
2013-07-16 10:40:12
我一直在看你的代碼。它看起來不像你得到的輸出是我正在尋找的。你的輸出缺少第一個參數。它應該看到第一個參數,因爲之前沒有列出「-s」,對嗎?我也嘗試過今天玩argparse,並且根本無法在不使用「-s」的情況下使用它。如果我指定-s,它會起作用,但如果沒有它,它會說這是一個未知選項。 – Nutrion
其他解決方案見下面http://stackoverflow.com/a/17692588/2404181 –
東西入手:
來源
2013-07-16 10:46:02 dilbert
我一直在使用http://docopt.org/非常滿意。
https://github.com/docopt/docopt
它爲您完成所有的猴子的工作,你只是從寫文檔,它讓你的命令行參數結構...
額外的好處:你的用戶獲得免費的幫助: - )
針對您的特殊情況下,它會但是,(強烈:-))鼓勵你使用特定的標準慣例,你可能會或可能不喜歡。你比如有定位和命名參數和docopt的選擇將它們放在一起給你,但命名參數通常有以下形式:
來源
2013-07-16 10:46:59 Dirk
我幾天前嘗試過docopt。這確實是一個偉大的圖書館;) – astrognocci
我使用專用庫,用於解析參數時的第二個建議它們比字符串列表要複雜得多。 Docopt非常棒,或者如果您不想安裝第三方庫,請參閱argparse。
但是,如果你想自己動手,嘗試類似的規定:
來源
2013-07-16 11:15:42 astrognocci