【问题标题】:Executing Python Script From Command Line is Hiding Print Statements从命令行执行 Python 脚本隐藏了打印语句
【发布时间】:2013-03-21 20:03:53
【问题描述】:

我知道这一定是一个超级基本的问题,但是,我尝试在整个 SO 中找到一个简单的答案,但找不到。

所以我的问题是:如何从命令行执行 python 脚本以便我可以看到打印语句。

例如,假设我有文件 test.py:

def hello():
    print "hello"

如果我进入解释器,导入 test.py,然后调用 test.hello(),一切正常。但是,我希望能够运行

python test.py

从命令行并让它打印“hello”到终端。

我该怎么做?

谢谢!

更新: 是的,对不起,我的脚本实际上更像这样:

def main():
    hello()

def hello():
    print "hello"

我还需要调用 main(),还是自动调用它?

【问题讨论】:

标签: python printing terminal


【解决方案1】:

在文件末尾添加:

if __name__ == '__main__':
    hello()

【讨论】:

  • 最好解释一下__main__,即使看起来很明显。
【解决方案2】:

您的print 语句包含在函数定义块中。您需要调用该函数才能执行:

def hello():
    print "hello"

if __name__ == '__main__':
    hello()

基本上这是说“如果这个文件是主文件(已经从命令行调用),那么运行这个代码。”

【讨论】:

    【解决方案3】:

    您必须让脚本实际调用您的方法。通常,您可以使用if __name__ == "__main__": 块来执行此操作。

    或者,您可以使用解释器的 -c 参数从 cli 显式导入和运行您的模块,但这需要脚本位于您的 python 路径上,而且您的风格也很糟糕现在可以在 Python 模块之外执行 Python 代码。

    【讨论】:

      【解决方案4】:

      据我了解,您的文件只有以下几行:

      def hello():
          print "hello"
      

      定义是正确的,但是你什么时候“调用”这个函数呢?

      您的文件应包含对hello() 函数的调用:

      def hello():
          print "hello"
      
      hello()
      

      这样,函数被定义在单个文件中调用。

      这是一种非常“类似脚本”的方法......它有效,但必须有更好的方法来做到这一点

      【讨论】:

        猜你喜欢
        • 2010-11-18
        • 2020-04-15
        • 1970-01-01
        • 2016-12-15
        • 2014-09-04
        • 2012-02-28
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        相关资源
        最近更新 更多