我从某个git存储库中检索了一个python项目。若要运行此项目,必须使用正确的参数通过命令行启动一个文件。这是一个例子:
#! /usr/bin/env python
import argparse
parser = argparse.ArgumentParser(description='Description')
parser.add_argument('arg1')
parser.add_argument('arg2')
# %%
def _main(args):
# Execute the code using args
if __name__ == '__main__':
_main(parser.parse_args())
我想在我自己的项目中使用此代码,因此,使用一组预定义的参数从另一个 python 文件调用 main 函数。
我找到了不同的方法,但我不知道什么是好方法。
- 使用 os 包调用文件,但对我来说似乎是一种不好的做法。
- 重构文件,以便 main 函数获取所需的参数(并摆脱 args 对象(,但这意味着命令行调用将不再有效。
- 其他?
将otherprogram
导入到您自己的程序中。
从您自己的代码中的适当点调用otherprogram._main()
,并向其传递argparse.Namespace
实例。
如果需要,您可以使用自己的 argparse
调用来构建它,或者只是以其他方式构造值。
确保 args 包含具有正确属性的对象,您实际上就可以调用 main 方法。考虑一下
import argparse
def _main(args):
print(args.arg1)
_main(argparse.Namespace(arg1='test1', arg2='test2'))
在另一个文件中,您可以执行此操作:
from some_git_repo import _main
from argparse import Namespace
_main(Namespace(arg1='test1', arg2='test2'))