CLI Arguments with Multiple Values

CLI arguments can also receive multiple values.

You can define the type of a CLI argument using typing.List.

from pathlib import Path
from typing import List

import typer


def main(files: List[Path], celebration: str):
    for path in files:
        if path.is_file():
            typer.echo(f"This file exists: {path.name}")
            typer.echo(celebration)


if __name__ == "__main__":
    typer.run(main)

And then you can pass it as many CLI arguments of that type as you want:

$ python main.py ./index.md ./first-steps.md woohoo!

This file exists: index.md
woohoo!
This file exists: first-steps.md
woohoo!

Tip

We also declared a final CLI argument celebration, and it's correctly used even if we pass an arbitrary number of files first.

Info

A List can only be used in the last command (if there are subcommands), as this will take anything to the right and assume it's part of the expected CLI arguments.