если одно действие argparse истинно, получить другое значение - PullRequest
0 голосов
/ 18 сентября 2018

Я новичок в Python и пробую код ниже.Все, что мне нужно, это если одно из значений argarse равно true, получить другое значение.

#! /home/y/bin/python3
import argparse
__author__ = "Yogesh"


parser =  argparse.ArgumentParser(description='This is demo script')
parser.add_argument('-s','--source_host', help='Source Host Name',required=True)
parser.add_argument('-d','--dest_host',help='Destination Host Name',required=True)
parser.add_argument('-n','--user_count',help="No of users to migrate",required=False)
parser.add_argument('--action', choices=['one-week', 'two-week','user-count','all-users'], default='all-users')

args = parser.parse_args()

print("Source Host:{0}".format(args.source_host))
print("Dest Host:{0}".format(args.dest_host))
if args.action == 'one-week':
    print("Migrate one week active users".format(args.action))
elif args.action == 'two-week':
    print("Migrate two week active users".format(args.action))
elif args.action == 'user-count':
    print("Mingrate user_count".format(args.action))
else:
    print("Migrate all users ".format(args.action))

Все, что я смотрю, это если число пользователей равно true, тогда код должен запрашивать --user_count.Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Хорошо .. нашел обходной путь, как показано ниже.Но все же было бы здорово узнать, есть ли вариант, заданный в оригинальном вопросе

parser =  argparse.ArgumentParser(description='This is demo script')
parser.add_argument('-s','--source_host', help='Source Host Name',required=True)
parser.add_argument('-d','--dest_host',help='Destination Host Name',required=True)
parser.add_argument('-n','--user_count',help="No of users to migrate",required=False)
parser.add_argument('--action', choices=['one-week', 'two-week','user-count','all-users'], default='all-users')


args = parser.parse_args()

print("Source Host:{0}".format(args.source_host))
print("Dest Host:{0}".format(args.dest_host))
if args.action == 'one-week':
    print("Migrate one week active users".format(args.action))
elif args.action == 'two-week':
    print("Migrate two week active users".format(args.action))
elif args.action == 'user-count':
    if args.user_count:
        print("Mingrate user_count".format(args.action))
        print("No of users:-{0}".format(args.user_count))
    else:
        print("Provide no of users you want to migrate with -n option")
else:
    print("Migrate all users ".format(args.action))
0 голосов
/ 18 сентября 2018

Я обновил условный оператор.Я думаю, это то, что вы хотели сделать.

if args.action == 'one-week':
    print("Migrate one week active users".format(args.action))
elif args.action == 'two-week':
    print("Migrate two week active users".format(args.action))
elif args.action == 'user-count':
    user_count = input('Enter user count: ')
    print("Mingrate {user_count} users".format(user_count=user_count))
else:
    print("Migrate all users ".format(args.action))
...