請參閱here以瞭解有關Python中各種選項和arg解析選擇優點的相關討論。Python argparse:如何獲得簡單的解析行爲?
我正在製作一個diff腳本,用Python的difflib
的輸出完成整潔的事情,其中涉及的部分內容是處理它可以調用的不同方式。例如,Git會發送7個參數(第二個和第五個是您想要區分的文件)到您配置的diff程序中,並且大多數不同也會接受輸入爲兩個文件參數。有趣的是,git的difftool
的--extcmd=
標誌調用你指定的差異只有兩個參數。
因此,使用OptionParser來做這件事非常容易,因爲它只是給你一個參數列表,我可以抓住第二個和第五個,並將它們發送到fileinput
。
我沒有注意到pydoc上的大旗幟,說它已經過時,所以我在看。
根本不清楚,如果甚至可以配置讓程序接受一系列位置參數而沒有「啓動它」的選項。這是我所需要的,因爲我無法改變方式,例如Git會調用不同的。
無論如何,我最終做了一些非常微不足道的操縱sys.argv
,這畢竟是我應該在這種特殊情況下開始做的事情。
if len(sys.argv) == 8:
# assume this was passed to git; we can of course do
# some parsing to check if we got valid git style args
args = [sys.argv[2], sys.argv[5]]
elif len(sys.argv) == 3:
args = sys.argv[:1]
else:
sys.exit("Not a valid number of args (2 or 7) to this diff program")
print "Files: " + ' '.join(args)
一個人怎麼可能會使用argparse來實現,簡單地試圖打開並閱讀所有它的參數的程序?
推理原因是棄用parseopt
它必須有可能複製其所有功能(在合理範圍內)。
請發佈您用於操作'sys.argv'的代碼。那麼也許我們可以建議如何用'argparse'來做同樣的事情。 – unutbu
@unutbu編輯。 –