这很容易实际。你只需要写一个函数,检查文件是否有效,否则写入错误。将该函数与类型选项一起使用。注意,你可以得到更多的花哨和创建一个自定义动作通过继承子类argparse.Action,但我不认为这里是必要的。在我的示例中,我返回一个打开的文件句柄(见下文):
#!/usr/bin/env python
from argparse import ArgumentParser
import os.path
def is_valid_file(parser, arg):
if not os.path.exists(arg):
parser.error("The file %s does not exist!" % arg)
else:
return open(arg, 'r') # return an open file handle
parser = ArgumentParser(description="ikjMatrix multiplication")
parser.add_argument("-i", dest="filename", required=True,
help="input file with two matrices", metavar="FILE",
type=lambda x: is_valid_file(parser, x))
args = parser.parse_args()
A, B = read(args.filename)
C = ikjMatrixProduct(A, B)
printMatrix(C)