在Python中,我可以调用导入模块的main()吗?

2023-11-29

在Python中我有一个modulemyModule.py 我在其中定义了一些函数和一个main(),它需要一些命令行参数。

我通常从 bash 脚本中调用这个 main() 。现在,我想把一切都放进一个小package,所以我想也许我可以将我的简单bash脚本变成Python脚本并将其放入包中。

那么,我实际上该如何调用 main()myModule.py 的功能来自 main() 函数MyFormerBashScript.py 的?我能做到吗?我如何通过任何论点 to it?


这只是一个函数。导入并调用它:

import myModule

myModule.main()

如果您需要解析参数,您有两种选择:

  • 将它们解析为main(),但传入sys.argv作为参数(下面的所有代码都在同一模块中myModule):

    def main(args):
        # parse arguments using optparse or argparse or what have you
    
    if __name__ == '__main__':
        import sys
        main(sys.argv[1:])
    

    现在您可以导入并调用myModule.main(['arg1', 'arg2', 'arg3'])来自其他另一个模块。

  • Have main()接受已经解析的参数(同样是myModule模块):

    def main(foo, bar, baz='spam'):
        # run with already parsed arguments
    
    if __name__ == '__main__':
        import sys
        # parse sys.argv[1:] using optparse or argparse or what have you
        main(foovalue, barvalue, **dictofoptions)
    

    并导入并调用myModule.main(foovalue, barvalue, baz='ham')其他地方并根据需要传递 python 参数。

这里的技巧是检测你的模块何时被用作脚本;当您运行 python 文件作为主脚本时(python filename.py) no import正在使用语句,因此 python 调用该模块"__main__"。但如果同样的话filename.py代码被视为模块(import filename),然后 python 使用它作为模块名称。在这两种情况下,变量__name__已设置,并对其进行测试会告诉您代码是如何运行的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中,我可以调用导入模块的main()吗? 的相关文章

随机推荐