2010-12-16 90 views
1

是否有人知道,如果我有一個腳本one.py被寫入方式如下:的Python - 運行外部腳本

if __name__ == '__main__': 
    # Do something 

而且我想提醒的是另一個腳本main功能。我應該怎麼做?

我想這會是這樣的(讓我們說這是launcher.py

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

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

唯一的問題是,我不能叫main()這種方式。

應該怎麼做?

回答

1
with file('a.py','rU') as f: 
    co=compile(f.read(),'foobar','exec') 
    exec co in {'__name__':'__main__'} 
+4

這是有效的,但它不是正確的做法。關鍵是'__name__ =='__main __''sentinel檢查你的程序是否正在獨立運行。當然,你可以假裝它是,但你不應該 - 相反,你應該調用它暴露的API!也就是說,你從'b'調用'a.main()'。 – katrielalex 2010-12-16 18:04:13

+1

除了@katrielalex所說的,這似乎是不必要的複雜,乍一看可能是不可理解的。 – 2010-12-16 18:13:29

+0

我與katrielalex和菲利克斯,這是什麼請求,但它絕對不是要走的路。 – slezica 2010-12-16 19:31:32

8

定義腳本,如:

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

當然,你可以命名但是你想要的功能。