Chris
Chris

Reputation: 31206

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 ]

Upvotes: 16

Views: 8357

Answers (1)

Michael H.
Michael H.

Reputation: 3483

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']]

Upvotes: 22

Related Questions