【问题标题】:Python - run external scriptPython - 运行外部脚本
【发布时间】:2011-05-26 16:56:07
【问题描述】:

有人知道我是否有一个脚本one.py,它的编写方式如下:

if __name__ == '__main__':
    # Do something

我想从另一个脚本调用 main 函数。我该怎么做?

我猜它会像 (假设这是launcher.py

# 'one' stands for import from `one.py` module
import one

if __name__ == '__main__':
    one.main()

唯一的问题是我不能这样调用main()

这应该怎么做?

【问题讨论】:

    标签: python main


    【解决方案1】:

    像这样定义你的脚本:

    def main():
        # Do something
    
    if __name__ == '__main__':
        # Processing of possible input parameters here and passing to main
        main()
    

    那你就可以了

    # 'one' stands for import from `one.py` module
    import one
    
    if __name__ == '__main__':
        one.main()
    

    当然,你可以随意命名函数。

    【讨论】:

      【解决方案2】:
      with file('a.py','rU') as f:
        co=compile(f.read(),'foobar','exec')
        exec co in {'__name__':'__main__'}
      

      【讨论】:

      • 这行得通,但这不是正确的方法。关键是__name__ == '__main__' 哨兵检查您的程序是否独立运行。当然,你可以假装它是,但你不应该——相反,你应该调用它自己公开的 API!也就是说,您从b 调用a.main()
      • 除了@katrielalex 所说的,这似乎是不必要的复杂,乍一看可能无法理解。
      • 我和 katrielalex 和 Felix 在一起,这可以满足要求,但绝对不是要走的路。
      猜你喜欢
      • 1970-01-01
      • 2015-10-01
      • 2014-05-14
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      相关资源
      最近更新 更多