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プログラミングに不慣れですが、Pythonはすべてのプログラムをモジュールとして扱うことを知っているので、基本的にはプログラムフローを次のように想定しています。

1)ユーザーがsample.pyを実行すると、制御フローはtest.pyに移動し、test.pyは呼び出し元のプログラムの名前を取得して、tryブロックにインポートします。

2)その後、フローはsample.pyに戻ります。理想的には、例外が発生してキャッチされるようにします。

3)ただし、コントロールがsample.pyに戻ると、test.pyに戻り、再帰ループが発生します。

私の質問は2つあります

1)モジュールをインポートしたプログラムの名前を取得する方法はありますか?同じワークスペース(同じフォルダ)にあるプログラムの名前を取得する方法もあります

2)この制御フローがある理由は、ユーザーにプログラム(test.py)を開かないようにするためですが、どのように表示しても、モジュールをプログラムにインポートしただけでは、再帰ループのように実行されます。 、デザインを変更して機能させるための提案、おそらくそれをまとめるための3番目のスクリプト?

私はPython2.7を使用しています

奇妙なデザインパターンは、ユーザーにプログラムを実行するためのコードを記述させたくないためです。ユーザーが記述すべき最大値は、プログラムをインポートするだけです。

4

1 に答える 1

0

さて、2つのルート:

まず、__name__インポート元のモジュールの名前が含まれています。

次に、私の個人的な提案は、test.pycか何かを配布し、test.pyの内容がわからないようにその.pycを実行するように依頼することです。

于 2012-11-25T04:26:47.320 に答える