2016-10-14 51 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没问题;) –