Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: Argparse with list of lists

Minimum verifiable example:

import argparse

parser = argparse.ArgumentParser(description='...')
parser.add_argument('-f','--file', type=str, nargs='+', help='file list')

args = parser.parse_args()

print(args.sparse[:])

And the idea is that I call this as:

python my_script.py -f f1 f2 f3 -f some_other_file1 some_other_file2 ...

And the output would be:

[ [ f1 f2 f3 ] [ some_other_file1 some_other_file2 ] ]

However, in this case, all that is printed out is:

 [ some_other_file1 some_other_file2 ]
like image 803
Chris Avatar asked Dec 10 '18 20:12

Chris


1 Answers

action='append' may be what you want:

import argparse

parser = argparse.ArgumentParser(description='...')
parser.add_argument('-f','--file', type=str, nargs='+', action='append', 
help='file list')

args = parser.parse_args()

print(args.file)

will give

$ python my_script.py -f 1 2 3 -f 4 5
[['1', '2', '3'], ['4', '5']]
like image 92
Michael H. Avatar answered Oct 23 '22 16:10

Michael H.