Импорт и использование функции, принимающей argparse в качестве параметра - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь импортировать программу и использовать в ней пару функций, но у меня возникла проблема, связанная с argparse.

В функциях, которые я хотел бы использовать, создатель передает свои аргументы синтаксического анализатора этой функции следующим образом.

args = parser.parse_args()

def write_flash(esp, args):

    if args.compress is None and not args.no_compress:
    args.compress = not args.no_stub

    # verify file sizes fit in flash
    flash_end = flash_size_bytes(args.flash_size)
    for address, argfile in args.addr_filename:
        argfile.seek(0,2)  # seek to end
        if address + argfile.tell() > flash_end:

Мне интересно, как я могу использовать эту функцию в другой программе, которую я пишу. Могу ли я как-то создать объект parser.parse_args () с такими же аргументами, как у него? Одна вещь, о которой я подумал, - это использовать subprocess.popen, чтобы запустить его так:

p = subprocess.Popen(['python', 'esptool.py', '--port',
'COM3', 'write_flash', '0x00000', 'boot_v1.7.bin', '0xfc000', 'esp_init_data_    default_v08.bin', '0xfb000',
'blank.bin', '0x01000', 'user1.1024.new.2.bin'])

Но это кажется не идеальным. Я действительно заблудился о том, как подойти к argparse в целом, и любая помощь будет высоко оценена, спасибо.

1 Ответ

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

parse_args() возвращает объект Namespace.Вы можете просто создать его самостоятельно.

from argparse import Namespace`
args = Namespace()
args.compress = True
args.no_stub = 3
print(args)

и затем передать его.

...