Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中调用程序_Python_Python 2.7 - Fatal编程技术网

在python中调用程序

在python中调用程序,python,python-2.7,Python,Python 2.7,有没有一种方法可以让一个程序调用python中的另一个程序 让我解释一下我的问题: 我正在构建一个应用程序(程序1),我还在编写一个调试器来捕获程序1中的异常(程序2){典型的尝试:除了:}代码块。现在我想发布程序2,这样对于任何像Prog1这样的应用程序,Prog2都可以处理异常(使我的工作更容易)。我只想让prog 1使用一段简单的代码,如: import prog2 我的困惑源于这样一个事实:我怎样才能做这样的事情,我怎样才能调用prog1中的prog2,即它应该像prog1中的所有代

有没有一种方法可以让一个程序调用python中的另一个程序

让我解释一下我的问题:

  • 我正在构建一个应用程序(程序1),我还在编写一个调试器来捕获程序1中的异常(程序2){典型的尝试:除了:}代码块。现在我想发布程序2,这样对于任何像Prog1这样的应用程序,Prog2都可以处理异常(使我的工作更容易)。我只想让prog 1使用一段简单的代码,如:

    import prog2
    
  • 我的困惑源于这样一个事实:我怎样才能做这样的事情,我怎样才能调用prog1中的prog2,即它应该像prog1中的所有代码都应该运行在
    {try:(prog1),除了:}
    prog2 try块

  • 任何关于我如何做到这一点的建议或开始的方向,我们都将非常感谢


    注意:我正在使用Python2.7和IDLE作为我的开发工具。

    尝试过
    execfile()
    了吗?请仔细阅读如何从脚本中执行另一个脚本。

    我认为您需要考虑类而不是脚本

    这个怎么样

    class MyClass:
        def __init__(self, t):
            self.property = t
            self.catchBugs()
    
        def catchBugs(self):
            message = self.property
            try:
                assert message == 'hello'
            except AssertionError:
                print "String doesn't match expected input"
    
    
    a = MyClass('hell') # prints 'String doesn't match expected input'
    
    更新 我猜您的目录中有类似的内容:

    • program1.py
      (主程序)
    • program2.py
      (调试器)
    • \uuuu init\uuuuu.py
    方案1 方案2
    这里我们将把程序1的整个对象传递给程序2的BugCatcher对象。然后我们访问该对象的某些属性,以验证它是否符合我们的预期。

    这如何使您的工作更轻松?如果捕捉到错误的异常,可能会出现很难跟踪的非常有趣的错误。此外,如果
    prog2
    中的代码正确地组织到函数中,则只需
    导入prog2
    ,然后
    尝试:prog2.run();除了…
    如中所述,我只想将prog 2开发为部门内任何人都可以使用的内部工具。我不希望捕捉到所有类型的异常,但要尽量减少一些一直困扰着我的异常s@mgilson我希望开发Prog1的人不要参与Prog2,而只是把它当作一个工具来使用,即只调用itI。我想问题是,你希望如何处理一个你一无所知的异常?你打算用它做什么?谢谢你的回答,我确实想到了这种方法,但它没有解决这样一个事实,即人们可能有自己的程序1,并且为每个人操作程序2并不能保持检测的一致性嗯,程序2是调试器,对吗?如果是这样,那么您可以将程序2合并到程序1中。或者你想把程序2分开,这样它就可以在其他程序中使用吗?我想把程序2分开,这样它也可以在其他程序中使用(有点像我团队的内部工具)谢谢你的精彩解释,我将试用它,并让您知道在program2导入BugCatcher类MainClass中发生了什么:def uu init uuu(self):self.test()def test():I=1/0;那么,如果我们想让程序1(即调试器)在函数test()中捕获被零除的异常,那么我们将如何在调试器中对其进行编码,以便它在不显式使用test()的情况下捕获异常,我想问的是,我们将如何对调试器进行泛化,以便它能够捕获所有异常,而不考虑其导入的.py文件(它应该适用于所有的.py文件),而无需更改调试器的内容。
    from program2 import BugCatcher
    
    class MainClass:    
       def __init__(self, a):       
          self.property = a
    
    
    obj = MainClass('hell') 
    bugs = BugCatcher(obj)
    
    class BugCatcher(object):
        def __init__(self, obj):
            self.obj = obj
            self.catchBugs()
    
        def catchBugs(self):
            obj = self.obj
            try:
                assert obj.property == 'hello'
            except AssertionError:
                print 'Error'