Как обрабатывать входные аргументы, которые могут быть одно значение или список из многих? - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю со скриптом из GitHub, который кто-то написал, который предназначен для командной строки.Все примеры показывают что-то вроде:

thisscript.py -u 'teepee' -p pword999 -d 8

Я хочу запустить это внутри другой функции, где я могу использовать ее как:

thisscript(username='teepee', password='pword999',...)

Основной файл содержит число class определения и эта основная функция (ниже).Как правильно обернуть эту функцию так, чтобы я мог вызывать ее как ее собственную функцию?

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='...', add_help=False, usage='thisscript.py -u username -p password [options]')
    parser.add_argument('-u', metavar='<STR>', type=str, help='username')
    parser.add_argument('-p', metavar='<STR>', type=str, help='password')
    parser.add_argument('-a', metavar='<INT>', type=int, default=4, help='Number ascending [4]')
    parser.add_argument('-d', metavar='<INT>', type=int, default=0, help='Number descending [0]')

Я пытался сделать import thisscript, но, похоже, это не сработало.

1 Ответ

0 голосов
/ 10 декабря 2018

Я думаю, что самым простым решением было бы вызвать скрипт так, как он был спроектирован для вызова - в оболочке - с помощью модуля subprocess.

import subprocess

def transcript(
        username, 
        password, 
        descending_num=0, 
        ascending_num=4,
        ):

    command = f'transcript.py -u {username} -p {password} -d {descending_num} -a {ascending_num}'
    subprocess.call(command, shell=True)

Предоставление ключевого слова функцииАргументы для отражения аргументов скрипта по умолчанию являются необязательными, но делают использование более понятным.

...