web-dev-qa-db-ja.com

コマンドライン引数としてタプルを渡す

私の要件は、タプルをコマンドライン引数として次のように渡すことです

_--data (1,2,3,4)
_

argparseモジュールを使用しようとしましたが、このように渡すと、文字列'(1,2,3,4)'として受け取ります。 _type=Tuple_に_argparse.add_argument_を指定して試しましたが、ここでは役に立ちません。

新しい型クラスを追加して、それを_add_argument_の型引数に渡す必要がありますか?

更新

答えに基づいて_ast.literal_eval_を試しました。それをありがとう。ただし、次のように結果にスペースが含まれます。

_(1,2,3,4)
<type 'str'>
(1, 2, 3, 4)
<type 'Tuple'>
_
16
user1423015

nargs引数のdatanargs="+"(1つ以上を意味する)に設定し、intと入力すると、コマンドラインで次のように引数を設定できます:

--data 1 2 3 4

args.data[1, 2, 3, 4]のリストになります。

タプルが必要な場合は、次のことができます。

my_Tuple = Tuple(args.data)

すべてを一緒に入れて:

parser = argparse.ArgumentParser()
parser.add_argument('--data', nargs='+', type=int)
args = parser.parse_args()
my_Tuple = Tuple(args.data)
17