Python最佳实践。从另一个python文件调用命令行python文件

时间:2019-04-16 11:23:34

标签: python

我从一些git repo中检索了一个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包调用文件,但对我来说似乎是一个坏习惯。
  • 重构文件,以便主函数使用所需的参数(并摆脱args对象),但这意味着命令行调用不再起作用。
  • 其他?

2 个答案:

答案 0 :(得分:2)

otherprogram导入您自己的程序。

从您自己的代码中的适当位置调用otherprogram._main(),并将其传递给argparse.Namespace实例。

如果需要,您可以使用自己的argparse调用来构建它,或者以其他方式构建值。

答案 1 :(得分:0)

只要确保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'))