Python运行外部脚本

Python运行外部脚本,python,main,Python,Main,有人知道我是否有一个脚本one.py,它是按以下方式编写的: if __name__ == '__main__': # Do something 我想从另一个脚本调用main函数。我该怎么做 我猜它会是这样的(假设这是launcher.py) 唯一的问题是我不能用这种方式调用main() 应该如何执行此操作?将脚本定义为: def main(): # Do something if __name__ == '__main__': # Processing of pos

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

if __name__ == '__main__':
    # Do something
我想从另一个脚本调用
main
函数。我该怎么做

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

唯一的问题是我不能用这种方式调用
main()


应该如何执行此操作?

将脚本定义为:

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()

当然,您可以根据需要命名函数。

定义脚本如下:

def main():
    # Do something

if __name__ == '__main__':
    # Processing of possible input parameters here and passing to main
    main()
with file('a.py','rU') as f:
  co=compile(f.read(),'foobar','exec')
  exec co in {'__name__':'__main__'}
那你就可以了

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

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

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

这是可行的,但不是正确的方法。关键是
\uuuu name\uuu=='\ uuuuuu main\uuuuu'
哨兵检查您的程序是否正在独立运行。当然,你可以假装它是,但你不应该——相反,你应该调用它自己公开的API!也就是说,你从
b
调用
a.main()
。除了@Katrielex所说的,这似乎是不必要的复杂,乍一看可能无法理解。我和Katrielex和Felix在一起,这符合要求,但肯定不是正确的方式。这是可行的,但不是正确的方式。关键是
\uuuu name\uuu=='\ uuuuuu main\uuuuu'
哨兵检查您的程序是否正在独立运行。当然,你可以假装它是,但你不应该——相反,你应该调用它自己公开的API!也就是说,你从
b
调用
a.main()
。除了@Katrielex所说的之外,这似乎是不必要的复杂,乍一看可能不可理解。我和Katrielex和Felix在一起,这是需要的,但绝对不是要走的路。
with file('a.py','rU') as f:
  co=compile(f.read(),'foobar','exec')
  exec co in {'__name__':'__main__'}