If your goal is to read one or more readable files, you can try this:
parser.add_argument('file', type=argparse.FileType('r'), nargs="+")
nargs="+"
gathers all command line arguments into a list. There must also be one or more arguments or an error message will be generated.
type=argparse.FileType('r')
tries to open each argument as a file for reading. It will generate an error message if argparse cannot open the file. You can use this for checking whether the argument is a valid and readable file.
Alternatively, if your goal is to read zero or more readable files, you can simply replace nargs="+"
with nargs="*"
. This will give you an empty list if no command line arguments are supplied. Maybe you might want to open stdin if you’re not given any files – if so just add default=[sys.stdin]
as a parameter to add_argument
.
And then to process the files in the list:
args = parser.parse_args()
for f in args.file:
for line in f:
# process file...
More about nargs:
https://docs.python.org/2/library/argparse.html#nargs
More about type: https://docs.python.org/2/library/argparse.html#type