我正在尝试编写一个在用户程序中发现异常的程序
我有一个名为 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 然后获取调用程序的名称并将其导入 try 块。
2)然后流程回到sample.py,理想情况下我希望遇到并捕获异常
3)但是当控件返回到 sample.py 时,它又返回到 test.py 导致递归循环
我的问题是双重的
1) 有没有办法获取已导入您的模块的程序的名称。还有一种方法可以获取位于同一工作区(同一文件夹)中的程序的名称
2)我有这个控制流程的原因是我希望用户不要打开我的程序(test.py),但不管我怎么看,如果我的模块只是导入到他的程序中,它将像递归循环一样运行, 有什么建议可以修改我的设计以使其工作,也许是第三个脚本来组合它?
我正在使用 python 2.7
奇怪的设计模式是因为我不希望用户编写任何代码来运行我的程序,他应该写的最大值只是导入我的程序