当与两个连接的python3脚本一起使用时,argparse发生冲突 [英] argparse conflict when used with two connected python3 scripts

查看:0
本文介绍了当与两个连接的python3脚本一起使用时,argparse发生冲突的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试运行一个本应获得argparse标志的python脚本(Main_SCRIPT),该脚本同时调用另一个脚本(Sub_SCRIPT),后者也应获得该标志以进行输入。当我调用main_script时,我得到一个错误,说我不能使用这个标志,因为它没有在脚本中定义,但实际上已经定义了。错误通知让我改用下标中的标志。

Main_脚本

parser = argparse.ArgumentParser(add_help=True)
parser.add_argument('-p', '--print_positive_results', action='store_true')
args = parser.parse_args()

PRINT_POSITIVE = args.print_positive_results
#I then use rhi global variable PRINT_POSITIVE 

子脚本

import argparse
parser = argparse.ArgumentParser(add_help=True)
parser.add_argument('-d', '--debug', action='store_true')
args = parser.parse_args()

当我调用python MAIN_SCRIPT.py -p时,我得到这个

usage: test_grammar.py [-h] [-d]
test_grammar.py: error: unrecognized arguments: -p

DEBUG = False
if (args.debug ):
    DEBUG = True

推荐答案

看起来像是将主脚本中的命令行参数传递给子脚本。

您可以尝试(也许应该)将argparse内容包装到:

if __name__ == '__main__':
    <argparse stuff>

在这种情况下,只有从命令行调用脚本时才会调用代码。真正的代码可以外包到一个函数中。这样,您可以通过argparse从命令行使用该脚本,并且只有在从另一个脚本调用该函数时才从该脚本导入该函数:

主脚本:

import argparse
import subscript

if __name__ == '__main__':
    parser = argparse.ArgumentParser(add_help=True)
    parser.add_argument('-p', '--print_positive_results', action='store_true')
    args = parser.parse_args()

    ...
    subscript.your_function(<whatever your args are>)
    ...

子脚本:

import argparse


def your_function(<your args>):
    <your code>


if __name__ == '__main__':
    parser = argparse.ArgumentParser(add_help=True)
    parser.add_argument('-d', '--debug', action='store_true')
    args = parser.parse_args()

    your_function(<whatever your args are>)
    ...

这篇关于当与两个连接的python3脚本一起使用时,argparse发生冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆