【问题标题】:in python how to count the number of arguments passed after a specific argument?在python中如何计算特定参数之后传递的参数数量?
【发布时间】:2022-02-08 20:48:30
【问题描述】:

在python中如何计算特定参数后传递的参数个数?

解释:

[user]$ command1 -h 192.168.1.1 -p 8888 -t 50 -u -c ...etc  main.py arg1 arg2 arg3

这里在 main.py 中使用 sys.argv 时,参数的数量是 12 个(或更多,每次可能不同)

我只想计算 main.py 之后的参数,所以只有:arg1 arg2 arg3 这是“3”。

有什么办法吗?

谢谢。

【问题讨论】:

  • command1 是什么?它看起来不像是python,如果不是,那么您不仅可以从该程序中获得一些帮助,而且对所提出问题的直接回答取决于该程序如何调用main.py
  • 如果您正确调用main.pyarg1 et al 应该是sys.argv 中的唯一三个参数。
  • @chepner 实际上我根本没有调用它,它是由配置文件执行的命令 1。
  • 那么command1应该是固定的。
  • 如果command1 将其所有 参数传递给main.py,您如何确定command1 的用户提供参数的顺序? command1 main.py -h ... 就不能这么简单吗?

标签: python linux bash centos


【解决方案1】:

您可以在sys.argv 中获取main.py 的索引,然后进行相应的切片:

main_index = sys.argv.index('main.py')
arguments_after_main = sys.argv[main_index:] # Should contain only arg1 arg2 arg3

【讨论】:

  • 这似乎做了一些相当大的假设。请注意,OP 要求提供一种方法来执行 main.py 中的参数计数,并且没有关于 command1 是什么的信息,也没有关于它的作用的信息。
  • OP 说sys.argv 在他们的情况下包含main.py,所以我正在解决这个假设。如果main.py 不是sys.argv 中的not,您是对的,但这不是被问到的问题。
  • 这个答案还假设command1 没有重新排序参数,如果问题是关于参数列表的,因为它呈现给command1,那么这个答案假设该程序没有添加任何main.py 之后的参数对后者可见。该问题包含这些假设可能不成立的线索。
  • 如果我不知道参数的顺序,我不知道如何找到不同参数之后的参数。这是我从 OP 中理解的最佳解决方案。
  • OP 有一个XY problem:你正在解决 Y。
猜你喜欢
  • 1970-01-01
  • 2017-10-16
  • 2014-10-01
  • 2011-05-24
  • 1970-01-01
  • 2012-10-24
  • 2019-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多