I am currently using argparse like this:
import argparse
from argparse import ArgumentParser
parser = ArgumentParser(description="ikjMatrix multiplication")
parser.add_argument("-i", dest="filename", required=True,
help="input file with two matrices", metavar="FILE")
args = parser.parse_args()
A, B = read(args.filename)
C = ikjMatrixProduct(A, B)
printMatrix(C)
Now I would like to note, that the argument of -i should be a readable file. How can I do that?
I’ve tried adding type=open, type=argparse.FileType('r') and they worked, but if the file is not valid, I would like to get an error message. How can I do that?
It’s pretty easy actually. You just need to write a function which checks if the file is valid and writes an error otherwise. Use that function with the
typeoption. Note that you could get more fancy and create a custom action by subclassingargparse.Action, but I don’t think that is necessary here. In my example, I return an open file handle (see below):