[英]Ignore optparse if value is given
我希望能夠傳遞參數而不必為optparse指定選項。 如果我確實傳遞了一個選項,則它必須是一個已知的選項,否則腳本將失敗。
R將以下文件同步到目標
myscript.py filename
將以下文件夾Rsync到目的地(所有這些都在我創建的函數中找到)。
myscript.py -f foldername
原因是,我有一個與“文件夾名稱”相關聯的數組(或字典)。 如果未傳遞任何選項,則CLI中給定的參數是用戶調用腳本的工作文件夾中的文件。 傳遞-f
表示要上載一個其值存儲在dict中的文件夾(用戶可以在任何目錄中,該文件夾的路徑會提前知道)。
我最好同時為兩個選項添加選項嗎? -f
表示文件, -v
表示文件夾,又稱為版本?
我一直很喜歡露骨,但您可以使optparse短路。
# args[0] is always the executable's name
if len(args) > 1:
parser.parse_args(args, options)
else:
#open file
將-f
視為不帶參數的選項,並使用它來切換位置參數(即foldername
)的行為。
parser.parse_args()
始終返回兩個值:
( 指南 )
這樣,您可以執行以下操作:
parser = OptionParser()
parser.add_option("-f", "", action="store_true", dest="folder", default=False)
(options, args) = parser.parse_args(sys.argv)
fname = args[1] # name of folder or file
if options.folder:
# do stuff for folder
else:
# do stuff for file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.