내 프로그램의 기본 기능과 관련된 특정 인수를 argparse
내에 입력하려고합니다. 그러나 두 가지 문제가 있습니다.argparse : 모두 배타적이지 않고 모두 선택 적이 지 않은 args 그룹을 요구하는 방법은 무엇입니까?
- 모든 인수가 상호 배타적 인 것은 아닙니다.
- 상호 배타적 인 그룹이더라도 상호 배타적 인 그룹 은 인수가 선택적이어야하며 기본 함수
search
(반드시 필요하지 않음)은 위치 인수를 사용합니다.
이상적으로는 'search'
이 기본 기능이라고 생각합니다. 그렇기 때문에, 나는 그 주장이 위치에 올랐 으면 좋겠다. 그래도 search
은 이 필요하지 않습니다.. , 그것은 그 자체로 호출되면
- :
search, --name, --list, --add, --import, --encrypt, --decrypt, --delete-database, --rename-database, --backup
또한,
--name
은 상호 배타적 인 옵션하지이며, 다목적의 일종이다 : 그러나 다음 중 적어도 하나가 필요합니다 그 인수 (데이터베이스의 이름)가 아직 존재하지 않는 경우 작성됩니다. - (데이터베이스)가 존재하는 경우 , 그것으로 호출 어떤 다른 옵션의 기능에 대한 인수로 사용됩니다
-n myfirstdb --decrypt
은, 반면에, 내가 가장 최근에 액세스 데이터베이스를 가정합니다.
--name
이없는 경우, 예를 들어, 현재, 나는 기본 옵션 중 하나를 호출 한 경우 --name
의 존재 여부에 대한 테스트와 함께,보고, 부담이되기 시작하는 검사를 실행해야합니다.
마지막으로 분명히 상호 배타적 인 옵션을 함께 사용할 수 없습니다.
search
을이 필수 배타적 그룹에 속하게하려면 어떻게해야합니까? 그리고 --name
도이 필수 그룹 중 하나가되게 할 수 있습니까?
서브 파서를 실험하고 있지만 문제가 해결되었는지 확실하지 않습니다. 어떤 제안이라도 며칠간의 시행 착오를 피할 수 있으며 크게 감사하겠습니다.
parser.add_argument(
'search', nargs='*', type=str, metavar='S', help='search [field] for string(s)')
parser.add_argument(
'--name', '-n', type=str, help='name of the database; created if does not exist')
main_ex_group = parser.add_argument_group(
title='main functions').add_mutually_exclusive_group()
main_ex_group.add_argument(
'--list', '-l', action='store_true', help='list databases')
main_ex_group.add_argument(
'--add', '-a', action='store_true', help='add new record to database')
main_ex_group.add_argument(
'--import','-i', dest='include', metavar='PATH', type=str,
help='import file(s) at PATH')
main_ex_group.add_argument(
'--encrypt', action='store_true', help='encrypt database')
main_ex_group.add_argument(
'--decrypt', action='store_true', help='decrypt database')
main_ex_group.add_argument(
'--delete-database', metavar='NAME', type=str,
help='delete a database')
main_ex_group.add_argument(
'--rename-database', nargs=2, metavar='NAME', type=str,
help='rename a database')
main_ex_group.add_argument(
'--backup', nargs=2, metavar='NAME DEST', type=str,
help='copy database to destination')
import_group = parser.add_argument_group(title='options for import')
import_group.add_argument(
'--parse-fields', action='store_true',
help='extract keys/fields from included file(s); used as columns')
import_group.add_argument(
'--delimiter', metavar='S', default='::', help='key-value separator')
argparse에는 아무 것도 없습니다. 직접 논리를 작성해야합니다. –
간결하고 명확한 대답을 해주셔서 감사합니다. – GH05T