ユーザープログラムで例外を検出するプログラムを作成しようとしています
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を使用しています
奇妙なデザインパターンは、ユーザーにプログラムを実行するためのコードを記述させたくないためです。ユーザーが記述すべき最大値は、プログラムをインポートするだけです。