如何在python文件中使用“argparse”参数?

2024-05-06 19:59:09 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个main.py和一个子文件.py

  1. main.py
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.subfile.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 define,我该怎么做

(这些代码是描述该问题的简化示例,不能通过重新组织代码来解决,必须通过使用subfile.py中的args来解决。)

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


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


Tags: 文件to代码pytestimportparseruse
2条回答

def


定义函数时,如果需要参数,可以在父项之间添加它们。
这就是模型:

def fun(par: type) -> ReturnedType:
    pass

例如:

def fun(a: int) -> None:
    if a == 0:
        print("Yes")
    else:
        print("No")

然后,在调用subfile.fun()时添加如下参数:

subfile.fun(a = a)

或者像这样:

subfile.fun(a)

返回


请记住,函数不会返回任何内容。
如果要为变量指定“是”或“否”,可以执行以下操作:

def fun(a: int) -> str:
    if a == 0:
        return "Yes"
    else:
        return "No"

如果只想返回“是”或“否”,则可能需要返回布尔值:

def fun(a: int) -> bool:
    if a == 0:
        return True
    else:
        return False

您还可以在一行中写入if语句:

print('Yes') if (a == 0) else print('No)

进口


要导入subfile.py,文件应位于同一目录中。 否则,您必须这样做:

from sys import path
# Imagine you need C:\\Python\MyFolder\subfile.py
path.append(r"C:\\Python\MyFolder")
import subfile

您可以添加另一个文件,例如,我们将其命名为arguments.py

然后在main.pysubfile.py的顶部包含以下行:

from arguments import args

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

这样main.pysubfile.py中的模块都可以访问相同的args对象

相关问题 更多 >