2016-10-14 81 views
1

使用argparse,我創建了一個小腳本,它包含一個用於我的分析程序的命令行解析器,它是自制的python包的一部分。它完美的工作,但我真的不喜歡如何控制它。更好的命令行解析python

這是怎樣的代碼看起來腳本本身

def myAnalysis(): 

    parser = argparse.ArgumentParser(description=''' 
     lala''') 
    parser.add_argument('-d', '--data',help='') 
    parser.add_argument('-e', '--option_1', help='', default=False, required=False) 
    parser.add_argument('-f', '--option_2', help='', default=False, required=False) 


    # combine parsed arguments 
    args = parser.parse_args()code here 

除了該有更多一些的分析包

entry_points={ 
      'console_scripts': [ 
       'py_analysis = edit.__main__:myAnalysis' 
      ] 

正如我所說的安裝文件,該工程沒有任何問題。要分析一些數據,我必須使用

py_analysis --data path_to_data_file 

有時,我需要一些選項。爲此,它可能看起來loke

py_analysis --data path_to_data_file --option_1 True --option_2 True 

在我個人的口味,這是一種醜陋。我寧願像

py_analysis path_to_data_file --option_1 --option_2 

我非常確定這是可能的。我只是不知道--option_1如何

+2

看看商務部:https://docs.python.org/3/庫/ argparse.html。你想'action ='store_true''。 –

回答

5

使用store_true行動

parser.add_argument('-e', '--option_1', help='', default=False, action ='store_true') 

然後只是增加了命令行將其值設置爲

1

爲了有一個位置參數,而不是一個選項,替代:

parser.add_argument('-d', '--data',help='') 

由:

parser.add_argument('data_file', help='') 
+1

添加_type = argparse.FileType()_將直接生成文件對象 - 而不是帶文件名的字符串, – volcano

+0

可惜,我不能接受兩個答案,你和@volcano結合的一個正是我想要的 – Glostas

+0

@Glostas沒問題;) –