簡體   English   中英

如果給出值,則忽略optparse

[英]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()始終返回兩個值:

  • options ,一個包含所有選項值的對象
  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM