在Python中的一组可选参数中声明一个位置参数

ung

我想argparse在Python中使用以下方法声明参数:

./get_efms_by_ids [-h] [-v] [inputfile [1 3 4 9] [-c 11..18] [20 25 40]]

在这种情况下,我想做的是:
如果inputfile使用,则可以接受两种类型的可选参数:1 3 4 9c 11..18或同时使用这两种参数如果我不输入inputfile,则必须缺少可选参数。

例如:我可以向您展示一些命令行用法示例:

./get_efms_by_ids Vacf.txt // default: get 1 or 10 first lines in Vacf.txt
./get_efms_by_ids Vacf.txt 1 3 4 9 // get the lines that indexes: 1 3 4 9 in Vacf.txt
./get_efms_by_ids Vacf.txt c 11..18 22 25 29 // get the lines that indexes are from 11 to 18, then the lines 22, 25, 29
./get_efms_by_ids c 11.. 18 // shows a readable error message
./get_efms_by_ids 1 3 4 9 // shows a readable error message

在下面的示例中,可以使用args='?'args='*'喜欢:

parser = argparse.ArgumentParser(description='Selecting some Elementary Flux Modes by indexes.',version='1.0')
parser.add_argument('efm_matrix_file', type=file, help='give the name of the efms matrix file')
parser.add_argument('ids', nargs='?', help='give the indexes of the chosen efms')
parser.add_argument('-i','--indexes',nargs='*', help='give the begin and start indexes of the chosen efms')

但是结果并不满足本文开头提出的目的。

任何帮助将不胜感激。

切普纳

首先,我将放弃该-c选项。您无需同时使用-c..来指示值的范围。这样可以简化您的通话,例如

./get_efms_by_ids [-h] [-v] [inputfile [index ...]]

其中每个index可以是单个整数也可以是由指定的范围lower..upper

这样,参数解析器可能很简单

def index_type(s):
    try:
        return int(s)
    except ValueError:
        try:
            return map(int, s.split(".."))
        except:
            raise ArgumentTypeError("Invalid index: %s" % (s,))

p = ArgumentParser()
p.add_argument("-h")
p.add_argument("-v")
p.add_argument("inputfile", nargs="?")
p.add_argument("indices", nargs="*", type=index_type)
args = p.parse_args()

if not (args.inputfile is None or os.path.exists(args.inputfile)):
    sys.exit("Invalid file name: %s" % (args.inputfile,))

解析您必须检查第一个位置参数(如果有)是否是有效文件,因为任何任意字符串可以是有效文件名。

index_type函数只是在解析过程中如何转换每个索引(无论是整数还是范围)的示例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

声明一个可选的数组参数

来自分类Dev

如何从一组中至少指定一个参数?

来自分类Dev

如何更改由空格分隔的一组参数,使其成为Discord.js中的一个参数?

来自分类Dev

将可选函数(和可选参数)传递给 Python 中的另一个函数?

来自分类Dev

在Google Maps API中仅选择一个位置,然后在下一页访问参数

来自分类Dev

从python中的列表中删除一个位置到另一个位置元素

来自分类Dev

将最后一个位置参数分配给变量并将其从“ $ @”中删除

来自分类Dev

Python 3 argparse:如何在一个位置参数中接受所有浮点值和字符串列表?

来自分类Dev

python中的可选位置参数

来自分类Dev

如何使用bash命令将一组目录从一个位置移动到另一个位置

来自分类Dev

Firestore.settings() 需要一个参数,但文档中的所有参数都是可选的?

来自分类Dev

在一组比赛中呼叫一个事件

来自分类Dev

在哈希中的某个位置插入一个条目

来自分类Dev

在R中的一个位置处理许多点

来自分类Dev

在R中的一个位置处理许多点

来自分类Dev

在PHP中从一个位置建立连接

来自分类常见问题

在PostgreSQL中,如何声明一个接受不同类型参数的可变参数函数?

来自分类Dev

如何在angular-ui-router中定义一个regex参数以仅从一组定义的字符串中进行选择

来自分类Dev

使用主脚本中的参数循环执行一组Python脚本

来自分类Dev

如何在python中创建一组参数化函数?

来自分类Dev

Python-从另一个列表中删除一组列表

来自分类Dev

Python-从另一个列表中删除一组列表

来自分类Dev

如何从一个位置参数生成两个变量?

来自分类Dev

当参数类型不属于一组类型时,阻塞一个函数

来自分类Dev

如何声明函数一次传递一个参数argv [i]?在C中

来自分类Dev

在3+列数据框中的熊猫中每个组的第一个和最后一个位置之前和之后添加行

来自分类Dev

如何在docopt中多次指定一个可选参数

来自分类Dev

使用Java中的可选参数获取第一个非null值的最佳方法

来自分类Dev

如何弹出bash函数或脚本的最后一个位置参数?

Related 相关文章

  1. 1

    声明一个可选的数组参数

  2. 2

    如何从一组中至少指定一个参数?

  3. 3

    如何更改由空格分隔的一组参数,使其成为Discord.js中的一个参数?

  4. 4

    将可选函数(和可选参数)传递给 Python 中的另一个函数?

  5. 5

    在Google Maps API中仅选择一个位置,然后在下一页访问参数

  6. 6

    从python中的列表中删除一个位置到另一个位置元素

  7. 7

    将最后一个位置参数分配给变量并将其从“ $ @”中删除

  8. 8

    Python 3 argparse:如何在一个位置参数中接受所有浮点值和字符串列表?

  9. 9

    python中的可选位置参数

  10. 10

    如何使用bash命令将一组目录从一个位置移动到另一个位置

  11. 11

    Firestore.settings() 需要一个参数,但文档中的所有参数都是可选的?

  12. 12

    在一组比赛中呼叫一个事件

  13. 13

    在哈希中的某个位置插入一个条目

  14. 14

    在R中的一个位置处理许多点

  15. 15

    在R中的一个位置处理许多点

  16. 16

    在PHP中从一个位置建立连接

  17. 17

    在PostgreSQL中,如何声明一个接受不同类型参数的可变参数函数?

  18. 18

    如何在angular-ui-router中定义一个regex参数以仅从一组定义的字符串中进行选择

  19. 19

    使用主脚本中的参数循环执行一组Python脚本

  20. 20

    如何在python中创建一组参数化函数?

  21. 21

    Python-从另一个列表中删除一组列表

  22. 22

    Python-从另一个列表中删除一组列表

  23. 23

    如何从一个位置参数生成两个变量?

  24. 24

    当参数类型不属于一组类型时,阻塞一个函数

  25. 25

    如何声明函数一次传递一个参数argv [i]?在C中

  26. 26

    在3+列数据框中的熊猫中每个组的第一个和最后一个位置之前和之后添加行

  27. 27

    如何在docopt中多次指定一个可选参数

  28. 28

    使用Java中的可选参数获取第一个非null值的最佳方法

  29. 29

    如何弹出bash函数或脚本的最后一个位置参数?

热门标签

归档