我正在編寫一個接受命令行參數的Python程序。我正在用getopt
解析它們(儘管我選擇的getopt
不是天主教婚姻,我更願意使用任何其他圖書館)。有沒有辦法指定某些參數必須給出,還是我必須手動確保所有參數都給出了?如何指定某些命令行參數在Python中是必需的?
編輯:我在迴應輿論譁然改變選項到參數所有實例。不要說我對幫助我的人沒有反應:-)
我正在編寫一個接受命令行參數的Python程序。我正在用getopt
解析它們(儘管我選擇的getopt
不是天主教婚姻,我更願意使用任何其他圖書館)。有沒有辦法指定某些參數必須給出,還是我必須手動確保所有參數都給出了?如何指定某些命令行參數在Python中是必需的?
編輯:我在迴應輿論譁然改變選項到參數所有實例。不要說我對幫助我的人沒有反應:-)
最簡單的方法就是自己動手。即
found_f = False
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
except getopt.GetoptError, err:
print str(err)
usage()
sys.exit(2)
for o, a in opts:
if o == '-f':
process_f()
found_f = True
elif ...
if not found_f:
print "-f was not given"
usage()
sys.exit(2)
我正在尋找一種方法不要自己做,但如果沒有,我想這是答案。 – 2009-08-22 08:09:22
至於我,我更喜歡使用optparse module,這是很強大的,對於exapmle它可以自動給出選項生成-h消息:
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose", default=True,
help="don't print status messages to stdout")
(options, args) = parser.parse_args()
您應手動檢查是否所有參數均給予:
if len(args) != 1:
parser.error("incorrect number of arguments")
製作選項強制似乎很奇怪,我 - 他們被稱爲選項沒有沒有任何感...
如果值*必須*給出,但您可以選擇賦予哪個值,那麼它仍然是一個選項,不是嗎?你會怎麼稱呼它? – 2009-08-22 08:17:05
對不起,我還沒有明白這個的目的。你能舉一個例子嗎?描述cli輸入?沒有必要的確切問題,你正在解決,只是任何... – 2009-08-22 08:28:22
當然。我正在編寫一個適用於文件的腳本。如果您不指定文件名,腳本將不知道要處理什麼,所以文件名是強制性的。 – 2009-08-22 09:38:14
+1爲天主教婚姻比喻。它讓我微笑。 – Imagist 2009-08-22 09:23:03
「強制選項」是矛盾的。你的意思是「論據」。而且 - 它看起來 - 你的意思是「參數」與「選項」的語法。選項/參數在此處定義得很好:http://docs.python.org/library/optparse.html#terminology和here:http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html#tag_12_02 – 2009-08-22 12:56:06