【发布时间】:2021-10-21 10:05:25
【问题描述】:
我想创建一个 python 脚本并解析一个命令行参数列表。
具体来说,我想给它以下参数并将它们作为数组读取。像这样的:
run script.py (['file1.ascii', float_12, float_13, float_14, float_15, float_16], \
['file2.ascii', float_22, float_23, float_24, float_25, float_26] )
输入数组在哪里:
input_array = (['file1.ascii', float_12, float_13, float_14, float_15, float_16], \
['file2.ascii', float_22, float_23, float_24, float_25, float_26] )
在脚本内部,我想做一个“for循环”并以这种方式分配变量:
for i in range(0, len(input_array) ):
variable_1 = 'filei.ascii'
variable_2 = float_i2
variable_3 = float_i3
variable_4 = float_i4
variable_5 = float_i5
variable_6 = float_i6
#do my calculations
【问题讨论】:
-
改掉使用
for i in range(list)):的习惯,改用for item in list:。 -
请注意,命令行参数列表只是一个平面字符串数组。你不能在那里传递任何其他东西——没有嵌套数组,没有非字符串数据类型——而不需要在平面字符串数组之间进行转换。
-
也就是说,如果每个内部数组始终正好是六个项目,那么您只需将较大的数组拆分为较小的 6 项数组,将每个此类内部数组中除第一个元素之外的所有元素转换为浮点数,你就完成了。一个能描述您在哪里遇到问题的狭隘问题将是一个更好的起点。
-
我想劝阻以 Python 列表/元组的格式对 args 进行这种非标准使用。使用经典标志和单个参数或接受来自标准格式(如 JSON)的文件的结构更为常见。关于您的用例的更多信息很好,因此我们可以帮助您避免xy problem。使用
variable_n也是一种反模式——使用list,通过lst[n]访问。见How do I create variable variables? -
(请注意,
run script.py (["string here", 1.23], ["another string", 4.56])甚至不是有效的 shell 语法,因此您实际上无法执行此操作)
标签: python arrays command-line-arguments