【问题标题】:Parsing command-line arguments in Python: array of variable length?在 Python 中解析命令行参数:可变长度数组?
【发布时间】:2014-05-04 14:59:17
【问题描述】:

是否可以在 Python 中创建一个可变长度的数组?

当我启动程序时,我从 sys.argv 获得了不同类型的长度,我需要与 sys.argv 中的字符串一样多的数组字段。

编辑以便更好地理解:

我写了一个python脚本,可以控制树莓派的GPIO端口

到目前为止,脚本只能同时控制一个端口。执行顺序如下:

sudo python /home/pi/Desktop/IO2.py #Port #State (Like high or low)

如果我想控制端口 5 并将其设置为高,它看起来像这样:

sudo python /home/pi/Desktop/IO2.py 5 high

但是现在,我想控制更多的端口,而不仅仅是一个。它应该是这样的:

sudo python /home/pi/Desktop/IO2.py 1,4,7,11 high

端口 1、4、7、11 现在很高。

【问题讨论】:

  • 向我们展示如何获得“sys.argv 的不同长度”的示例。 sys.argv 取决于您传递给程序的命令行参数。
  • 您能否为您的问题提供更多背景信息?我不确定我是否了解您想要做什么。
  • python 数组是列表,它们本身是可变长度的
  • 我不明白你的意思。如果你想将元素添加到 python list,只需使用 append()extend 方法。还是你在使用array 模块的类?
  • @gefei 我并不是要粗鲁。我只是假设如果 OP 使用术语array,那么我们应该坚持这一点,或者专门询问他们是否真的在谈论这个。就像@Bakuriu 所做的那样。

标签: python arrays python-2.7 command-line-arguments dynamic-arrays


【解决方案1】:

你可以像这样创建一个新的空数组:

a = ["Default value"] * length

"Default value" 是您希望在每个空间中拥有的值(这些显然可以重新分配..),length 是您从 sys.argv 获得的长度

但是,由于您可以轻松地在数组中添加和删除元素,您可能想要重新设计您的设计?

【讨论】:

    【解决方案2】:

    这是一个典型的 XY 问题示例。

    您的问题与 python 数组甚至 python 列表无关,而与如何从命令行参数中检索选项列表有关。为此,您应该使用 argparse 而不是尝试手动解析 sys.argv

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2017-10-29
      相关资源
      最近更新 更多