2012-08-28 53 views
0

我需要在不同的參數中多次執行另一個python腳本中的python腳本。 我知道這聽起來很可怕,但有理由。 問題是,被調用腳本不是檢查它是否被導入或執行(如果__name__ =='__main__':...)。多次從python腳本中調用python腳本的最佳方法

  1. 我知道我可以使用subprocess.popen(「python.exe callee.py -arg」),但似乎要慢得多,那麼它應該是,我想那是因爲Python.exe是beeing開始,終止多次。
  2. 我無法定期將腳本作爲模塊導入,因爲它的設計如開頭所述 - 導入後,由於缺少main()方法,它將在沒有參數的情況下執行。
  3. 我不能改變被叫腳本或者
  4. 按我的理解,我不能使用的execfile()或者是因爲它不帶參數的
+2

你可以修改「被調用腳本」嗎? – mgilson

+1

用適當的包裝器代替腳本,該包裝器具有相同的功能,但從原始腳本中調用方法或類。 –

+0

我無法修改被調用者 – AntiZamba

回答

2

找到適合您的解決方案。你可以用python重新加載一個模塊,你可以修補sys.argv。

想象echo.py是你要調用一個多次被調用腳本:

#!/usr/bin/env python 
# file: echo.py 

import sys 
print sys.argv 

你可以做你的來電者的腳本:

#!/usr/bin/env python 
# file: test.py 
import sys 
sys.argv[1] = 'test1' 
import echo 
sys.argv[1] = 'test2' 
reload(echo) 

,並調用它。比如用:蟒蛇test.py place_holder

它會打印:

['test.py', 'test1'] 
['test.py', 'test2'] 
+0

請注意,這是關於python 2.7的,對於python 3,使用模塊imp和imp.reload – gbin