接收我从第一个Python脚本调用的第二个Python脚本的输出

时间:2015-01-31 19:51:55

标签: python function

在我发布之前,我试图寻找答案,但我在措辞方面遇到了麻烦。所以,如果网站上有重复的问题,我道歉。

我有一个Commend Line python脚本(在本例中我们称之为脚本1),它从另一个脚本调用一个函数(我们称之为脚本2)。我是这样做的:

import Script2
Script2.Some_Function()

Some_Function可以执行各种操作,例如连接到Internet上的服务器以及执行文件查找。通常,如果其中一个任务失败,它会在屏幕上显示错误信息:

def Some_Function():
   def error(err):
     print "Error: " + err

然而,当我知道应该打印错误时,我没有看到任何在屏幕上打印的内容。我怀疑这是因为我从脚本1中调用它。 有什么我能做的吗?我真的需要打印脚本2的输出。

1 个答案:

答案 0 :(得分:1)

如果您的代码与您的代码段完全相同,那么它可能不会起作用,但首先,让我们使用正确的措辞,在python中使用术语module来命名另一个包含您想要的符号的python文件导入当前(module)。

脚本通常是您从命令行界面运行的高级语言的一小段代码。因此,根据经验,python中的脚本是您放置if __name__ == '__main__':

的地方

所以我正在重命名你的例子:

<强> myscript.py

import external_module
external_module.some_function()

<强> external_module

def some_function():
   def error(err):
       print "Error: " + err
  

然而,当我知道应该打印错误时,我没有看到任何在屏幕上打印的内容。我怀疑这是因为我从脚本1中调用它。有什么我可以做的吗?我真的需要打印脚本2的输出。

现在代码被“清理”了一下,当你运行你的程序时发生了什么?

python myscript.py
好吧,没什么,这是可以预料的:因为你什么也没做!让我们添加评论:

<强> myscript.py

import external_module            # you import the module external_module
external_module.some_function()   # you run the function some_function()
                                  # from external_module
在myscript中没有什么是错的。但你的问题在于external_module:

<强> external_module

def some_function():              # you declare the function some_function
   def error(err):                # you declare the function error 
                                  # that lives only in some_function() scope
       print "Error: " + err      # in error() you print something out!

所以,当你执行external_module.some_function()时,你只需声明函数error()而你永远不会运行它,这意味着你永远不会运行print语句。如果您忘记import方面,只能在python REPL中执行:

>>> def foo():
...    def bar():
...        print("Hello world?")
...
>>> foo()
>>>

它什么都没做!但如果你这样做:

>>> def foo():
...    def bar():
...        print("Hello World!")
...    bar()            # here you call the function bar() inside foo()
...
>>> foo()
Hello World!
>>>

你可以运行bar()

我希望我的解释足够详尽!

HTH