2012-11-25 70 views
0

我想寫發現在用戶程序的例外遞歸調用模塊的邏輯缺陷

程序我有一個名爲test.py是:

try: 
    # some code to get the name of the calling program 
    #Then the code is like "import filename.py" , for example the next line 
    import sample.py # this is what should happen when the file name is got 

    execfile("test.py") # to run this file 

catch: 
     # catching some exceptions here 
現在

,如果我假設用戶有一個文件說sample.py它看起來像

import test.py 

def __main__(): 
    4/0 # sample exception 

我是新來的Python編程,但我知道,蟒蛇把所有的程序作爲模塊,所以基本上是我設想的程序流程爲

1)當用戶運行sample.py時,控制流轉到test.py,然後獲取調用程序的名稱並將它導入到try塊中。

2)然後流回到sample.py和理想,我想可能遇到的異常,並抓住

3),但是當控制回來sample.py它吉斯回test.py引起遞歸循環

我的問題是雙重的

1)是否有辦法讓已經導入了模塊程序的名稱。也有一種方法來獲取在同一工作區(相同的文件夾)中的程序的名稱

2)我有這個控制流的原因是我想用戶不要打開我的程序(test.py ),但無論我如何看待它,如果我的模塊只是導入到他的程序中,它將像遞歸循環一樣運行,任何修改我的設計以使其工作的建議,也許第三個腳本將它組合在一起?

我使用Python 2.7

奇怪的設計模式是因爲我不希望用戶編寫任何代碼來運行我的程序,最大,他應該寫只是導入我的程序

+1

我不太明白的內容:哪裏是用戶編寫代碼?如果他們需要做的只是運行樣本,那麼爲什麼樣本需要了解測試? –

+0

用戶在sample.py中寫入代碼,用戶使用test.py查找異常 – user1801279

+0

那麼爲什麼sample.py需要導入test.py?用戶運行test.py不是更簡單更合適嗎? –

回答

0

好,所以有兩條路線:

首先,__name__包含您從中導入的模塊的名稱。

其次,我個人的建議是分發test.pyc或東西,問的人來運行。pyc文件,使他們不知道test.py的