위치 및 선택적 인수를 사용하는 방법을 배우고 있습니다.
내 입력 :파이썬은 argparse로 위치 인수의 길이를 얻습니다.
$ python generate_data.py output --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx
번호 :
import argparse
parser = argparse.ArgumentParser(description='Generate an output file from the contents of *.spt and *.fpx.')
parser.add_argument('output_file') # Number of output files should be 1.
parser.add_argument('--spt', required=True, nargs='+', help='spt files') # Number of *.spt should be >= 1.
parser.add_argument('--fpx', required=True, nargs='+', help='fpx files') # Number of *.fpx should be >= 1.
args = parser.parse_args()
print(len(args.output_file), len(args.spt), len(args.fpx))
if len(args.output_file) != 1 or len(args.spt) != len(args.fpx):
parser.print_help()
exit(-1)
output
가 generate_data.py
의 출력 파일이며, 출력 파일의 개수는 1
--spt
필요한 인자에 의해 준수되어야 * .spt , 번호는 >= 1
이어야합니다.
--fpx
은 필수 인수이며 그 뒤에는 * .fpx가 있으며 숫자는 >= 1
이어야합니다.
내 질문에 대한 답변은 다음과 같습니다.
1. len(args.output_file) == 6
이 있는데, 1이 아닙니다. 사용자가 하나의 출력 파일 만 입력하도록하려면 어떻게해야합니까?
2. 출력 파일을 다음과 같이 명령 줄 끝에 넣을 수도 있습니다.
$ python generate_data.py --spt google.spt OK-Google.spt --fpx google.fpx OK-Google.fpx output
나는'인쇄 (인수)'에 좋아한다. 그렇게하면 파싱 결과를 기대하지 않고 볼 수 있습니다. 이 경우'otuput_file'은 문자열이 아닌 목록을 보여줍니다. 2) 이상적으로 argparse는 한 문자열을 남은 위치에 예약해야한다는 것을 알아야하지만 그 향상은 여전히 기다리고 있습니다. – hpaulj