簡體   English   中英

如何使命令行參數值分配給 python 中的 2 個變量選擇?

[英]How can I make command line argument values get assigned to selection of 2 variables in python?

我在這里使用 argparse package。

此代碼中有 4 個可能的命令行 arguments。 我只需要選擇其中兩個的任意組合,例如“python script.py -arg1 int1 int2 int3 -arg4 int1 int2 int3”,並將這些 int 值分配給 for 循環中的變量(見下文)。

我怎樣才能使輸入 4 個命令行 arguments 中的哪一個無關緊要,並將它們的 int 值分配給兩個 for 循環之一? 只要所有組合都是可能的,他們進入哪個 for 循環並不重要。 這甚至有意義嗎? 抱歉,如果沒有

import numpy as np
import argparse

parser = argparse.ArgumentParser(description = 'Test')
parser.add_argument('-arg1', nargs =3, required = False, type = int)
parser.add_argument('-arg2', nargs = 3, required = False, type = int)
parser.add_argument('-arg3', nargs = 3, required = False, type = int)
parser.add_argument('-arg4', nargs = 3, required = False, type = int)
args = parser.parse_args()

if arg1:
  args.arg1[0] = #start1 or start2
  args.arg1[1] = #stop1 or stop2
  args.arg1[2] = #num_samples1 or numsamples2

if arg2:
  args.arg2[0] = #start1 or start2
  args.arg2[1] = #stop1 or stop2
  args.arg2[2] = #num_samples1 or numsamples2

if arg3:
  args.arg3[0] = #start1 or start2
  args.arg3[1] = #stop1 or stop2
  args.arg3[2] = #num_samples1 or numsamples2

if arg4:
  args.arg4[0] = #start1 or start2
  args.arg4[1] = #stop1 or stop2
  args.arg4[2] = #num_samples1 or numsamples2


for a in np.linspace(start1, stop1, num_samples1):
   for b in np.linspace(start2,stop2,num_samples2):
        #do something with these values

首先通過迭代四種可能性並選擇那些不是無的來獲得你的兩個參數:

two_args = [a for a in (args.arg1, args.arg2, args.arg3, args.arg4) if a]
if len(two_args) != 2:
    print("Exactly two of arg1, arg2, arg3, and/or arg4 must be provided")
    exit()

然后你可以得到你的六個值是這樣的:

(start1, stop1, num_samples1), (start2, stop2, num_samples2) = two_args

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM