Home  >  Article  >  Backend Development  >  How can you pass a list of arguments to a command-line program using argparse?

How can you pass a list of arguments to a command-line program using argparse?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 04:10:28846browse

How can you pass a list of arguments to a command-line program using argparse?

Passing Lists as Command-Line Arguments with argparse


When building command-line programs, it's often beneficial to allow users to pass lists as arguments. argparse makes this possible, providing several options to accomplish this.


nargs


To receive a list of arguments, utilize the 'nargs' parameter. Specify ' ' to accept one or more arguments, '*' to accept zero or more, '?' to accept zero or one, or a specific number (like 2) to accept that exact number of arguments.


parser = argparse.ArgumentParser()<br>parser.add_argument('-l', '--list', nargs=' ')<br>

This approach makes it easy for users to provide multiple arguments as a single input.


append


Alternatively, you can use the 'append' action to append each argument to a list as it is encountered.


parser.add_argument('-l', '--list', action='append')<br>

This method requires users to specify the flag multiple times, one for each argument they want to include in the list.


Avoid type=list


While it may seem intuitive to set 'type' to 'list,' this is not recommended as it returns a list of lists, not a flattened list. This can lead to unexpected behavior.


Example Usage


Consider a script where the user needs to pass a list of integers.


parser = argparse.ArgumentParser()<br>parser.add_argument('-l', '--list', nargs=' ', type=int)<br>

This allows the user to enter multiple integers, which are then automatically converted to a list of integers and stored in the 'list' variable.


Note:



  • Avoid using quotes on the command line as they can interfere with argparse's parsing.

  • Don't use type=list, as it leads to a list of lists instead of a flattened list.

The above is the detailed content of How can you pass a list of arguments to a command-line program using argparse?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn