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 然后获取调用程序的名称并将其导入 try 块。

2)然后流程回到sample.py,理想情况下我希望遇到并捕获异常

3)但是当控件返回到 sample.py 时,它又返回到 test.py 导致递归循环

我的问题是双重的

1) 有没有办法获取已导入您的模块的程序的名称。还有一种方法可以获取位于同一工作区(同一文件夹)中的程序的名称

2)我有这个控制流程的原因是我希望用户不要打开我的程序(test.py),但不管我怎么看,如果我的模块只是导入到他的程序中,它将像递归循环一样运行, 有什么建议可以修改我的设计以使其工作,也许是第三个脚本来组合它?

我正在使用 python 2.7

奇怪的设计模式是因为我不希望用户编写任何代码来运行我的程序,他应该写的最大值只是导入我的程序

4

1 回答 1

0

好的,所以两条路线:

首先,__name__包含您从中导入的模块的名称。

其次,我个人的建议是分发一个 test.pyc 或其他东西并要求该人运行该 .pyc 以便他们不知道 test.py 的内容

于 2012-11-25T04:26:47.320 回答