Obecnie używam argparse tak:pliku jako argument wiersza polecenia dla argparse - komunikat o błędzie, jeśli argument nie jest prawidłowy
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)
Teraz chciałbym zwrócić uwagę, że argument -i
powinien być plik czytelny . Jak mogę to zrobić?
Próbowałem dodać type=open
, type=argparse.FileType('r')
i zadziałały, ale jeśli plik nie jest prawidłowy, chciałbym otrzymać komunikat o błędzie. Jak mogę to zrobić?
@moose - Jeszcze jeden komentarz. 'os.path.isfile' może być bardziej odpowiednie niż' os.path.exists' (w zależności od tego, czy chcesz również akceptować katalogi) – mgilson
Właściwie uważa się, że lepiej jest spróbować otworzyć plik za pomocą bloku try-except, niż sprawdzić istnienie – jarondl
@jarondl ma rację. Należy to zmienić, aby użyć 'try: ... except IOError', aby uniknąć potencjalnych warunków wyścigu. W większości przypadków nie ma to znaczenia, ale ostatnio mnie to ugryzło. – AlexLordThorsen