를 생략하면 특정 파일을 검색하고 argparse파이썬 argparse, 옵션은 내가 입력 파일에 대한 인수를
parser.add_argument('-al', nargs = 1, type = argparse.FileType('r'),
dest = 'alphabet')
이 매개 변수는 선택 사항이지만 생략하면 나는 아직도 얻을 필요가 그것을 취급이 용이 현재 디렉토리를 검색하여이 입력 파일. 그리고 .al 확장자를 가진 파일이 두 개 이상이거나없는 경우 오류가 발생합니다. 그렇지 않으면 발견 된 파일을 엽니 다.
#if no alphabet look for .al file in current directory
if(args.alphabet == None):
AlFiles = [ f for f in os.listdir('.')
if os.path.isfile(f) and f.endswith('.al') ]
#there should be one file with .al extension
if(len(AlFiles) != 1):
sys.exit('error: no alphabet file provided and '
'there are more than one or no .al file in current directory, '
'which leads to ambiguity')
args.alphabet = open(AlFiles[0], 'r')
어쩌면 기본 또는 조치 매개 변수, argparse 이것을 수행 어쨌든입니다. 인수를 구문 분석하기 전에 검색을 수행하고 예외 상황이 발생하면 필요한 파일이 명령 줄 인수로 제공 될 수 있기 때문에 여전히 예외를 발생시킬 수 없습니다. 구문 분석기가 필요한 매개 변수를 충족시키지 못했지만 argparse를 사용하여 구문 분석기를 수행하는 방법을 찾을 수없는 경우 작업 수행을 고려했습니다.
그래서 구문 분석을 한 후 크기에 대해'args.alphabet'을 확인 했습니까? 여러 개의 파일이있는 경우 모두 열립니다? –
귀하의 질문을 이해하기 때문에, 파일이 디렉토리의 유일한 * .al 파일 인 경우에만 파일을 열려고합니다. 솔루션 시도에 대한 편집을 확인하십시오. – angryfruitsalad
야아 난 그냥 add_arguments에, 당신의 대답을 얻었다 유형의 모든 파일이 공개를 automaticly 이 은 적어도 당신이 다시 다시는 안'args.alphabet = 열려있는 것을 의미에 FileType입니다 (args.alphabet [0])' 그리고 만약 오류가 발생하면 여러 파일이 닫힙니다. –