首页 > 解决方案 > 如何在 python 文件中使用“argparse”参数?

问题描述

假设我有一个 main.py 和一个 subfile.py。

  1. 主文件
import subfile #Writen by myself. I want to share argparse with it

import argparse
parser = argparse.ArgumentParser(description='test',formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--a', type=int, default=0, help='test')
args = parser.parse_args()

args.a=0
subfile.fun()

args.a=1
subfile.fun()

args.a=0
subfile.fun()

2.子文件.py

xxxxxsome operation here to use args in main.pyxxxx
# In tensorflow wrapped argparse, I just need to define the same ArgumentParser to use args defined in main.py. 
# But it's not suitable for "argparse", which would cause conflicts.

def fun():
    if args.a==0:
        print('yes')
    else:
        print('no')

在 main.py 中,我使用 argparse 传递参数,而 main.py 使用 subfile.py。

现在,我想在 main.py 中使用 args 定义,我该怎么做?

(代码是描述问题的简化示例,无法通过重组代码解决,必须通过使用 subfile.py 中的 args 来解决。)

谢谢你的帮助!我整天都被一些虫子折磨,你的回答会帮助我。赞赏!


编辑:实际上我知道如何将参数传递给函数。但正如我上面所说,我编写的示例代码只是为了解决关键问题:如何在 python 文件中使用库“argparse”,该库在 tensorflow“FLAG”中的类似库中得到支持。

标签: pythonargparse

解决方案


您可以添加另一个文件,我们称之为它arguments.py

然后包括在两者的顶部main.pysubfile.py以下行:

from arguments import args

然后,您将所有与解析命令行参数相关的代码移至arguments.py.

这样,两个模块main.pysubfile.py可以访问同一个args对象。


推荐阅读