更好的命令行解析python

时间:2016-10-14 11:28:48

标签: python argparse

使用argparse,我创建了一个小脚本,其中包含我的分析程序的命令行解析器,它是自制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

有时,我需要一些选项。为此,它可能看起来很糟糕

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

就我个人而言,这有点难看。我更喜欢像

这样的东西
py_analysis path_to_data_file --option_1 --option_2

我很确定这是可能的。我只是不知道如何

2 个答案:

答案 0 :(得分:5)

使用 store_true 操作

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

然后只需添加到命令行 - option_1 就会将其值设置为 True

答案 1 :(得分:1)

要使用位置参数而不是选项,请替换:

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

由:

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