我目前使用argparse这样有效:文件作为argparse命令行参数 - 错误消息如果参数不是
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)
现在,我想指出,是的-i
的参数应该是一个可读的文件。我怎样才能做到这一点?
我试过加type=open
,type=argparse.FileType('r')
他们工作,但如果文件无效,我想获得一个错误信息。我怎样才能做到这一点?
@moose - 一个其他评论。 'os.path.isfile'可能比'os.path.exists'更合适(取决于你是否也想接受目录) – mgilson 2012-07-18 12:44:13
实际上,尝试使用try-except块打开文件被认为是更好的做法,比检查是否存在 – jarondl 2013-07-06 12:45:50
@jarondl是对的。这应该改为使用'try:...除了IOError'以避免潜在的竞争条件。对于大多数情况下它并不重要,但最近这让我感到困扰。 – AlexLordThorsen 2015-05-27 00:27:31