我正在尝试编写一个在用户程序中找到异常的程序
我有一个名为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
奇怪的设计模式是因为我不希望用户编写任何代码来运行我的程序,他应该写的最大值就是导入我的程序
答案 0 :(得分:0)
好的,有两条路线:
首先,__name__
包含您从中导入的模块的名称。
其次,我的个人建议是分发一个test.pyc或者其他东西并要求该人运行该.pyc,以便他们不知道test.py的内容