导入和使用以argparse作为参数的函数

时间:2018-09-13 16:20:09

标签: python argparse

我正在尝试导入程序并在其中使用几个功能,但遇到了与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 :(得分:1)

parse_args()返回一个Namespace对象。您可以自己创建一个。

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

然后通过它。