【发布时间】:2012-11-25 02:50:17
【问题描述】:
我正在尝试编写一个在用户程序中查找异常的程序
我有一个名为 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
奇怪的设计模式是因为我不希望用户编写任何代码来运行我的程序,他应该写的最大只是导入我的程序
【问题讨论】:
-
我不太明白:用户在哪里写代码?如果他们只需要运行样本,那么样本为什么需要了解测试?
-
用户在 sample.py 中编写代码,用户使用 test.py 查找异常
-
那为什么sample.py需要导入test.py呢?用户运行 test.py 不是更容易和更合适吗?
-
谢谢你的回答,原因是我不想让用户知道 test.py 的内容。在用户的眼中,它应该只是在他的文件中的一个简单的导入。
标签: python python-2.7 logic