Как передать параметры в командной строке без использования флагов в Python - PullRequest
0 голосов
/ 23 января 2019

Итак, у меня есть сценарий main.py, который по сути будет запускать определенные условные операторы на основе того, что передается в командной строке.Например, если я использую main.py -t, будет запущен тестовый режим.Если я запусту main.py -j /testdata -c 2222-22-22 -p 2222-22-22, это запустит режим по умолчанию и т. Д.

Как я могу прекратить передавать флаги в командной строке и иметь возможность запускать свой код, вместо использования флагов -j, -c и -p, я могу просто передать значения в обычном режиме.

Пока мой код выглядит следующим образом:

def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("-c", "--execute-cur-date", action="store", required=False)
    parser.add_argument("-p", "--execute-pre-date", action="store", required=False)
    parser.add_argument("-j", "--execute-json-path", action="store", required=False)
    parser.add_argument("-t", "--execute-test", action="store_true", required=False)
    args = parser.parse_args()

    if args.execute_test:

        testing()

    elif args.execute_json_path and args.execute_cur_date and args.execute_pre_date:

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы можете взглянуть на Python-Fire https://github.com/google/python-fire

import fire


def main(c=None, p=None, j=None, t=None):
    print(c, p, j, t)
    if c:
        print("C passed")
    elif p and j and t:
        print("P, J, T passed")


if __name__ == "__main__":
    fire.Fire(main)

Вы можете просто пропустить None, чтобы пропустить параметр.

python main.py None p_val j_val t_val

python main.py c_val

0 голосов
/ 23 января 2019

Используйте модуль sys для анализа аргументов командной строки (sys.argv будет списком аргументов):

#!/usr/bin/env python3

import sys

# The first argument (sys.argv[0]) is the script name
print('Command line arguments:', str(sys.argv))

Запуск скрипта:

$ python3 script.py these are my arguments
Command line arguments: ['script.py', 'these', 'are', 'my', 'arguments']

Вы можете найти больше примеров использования в этом руководстве .

...