2013-03-21 139 views
3

我知道这一定是一个超级基本问题,但是,我试图在整个SO中找到一个简单的答案,并且找不到一个。从命令行执行Python脚本隐藏打印语句

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

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

def hello(): 
    print "hello" 

如果我进入了解释,进口test.py,然后调用test.hello(),一切工作正常。但是,我希望能够从命令行运行

python test.py 

并让它向终端打印“hello”。

我该怎么做?

谢谢!

更新: 是的,对不起,我的剧本其实更像是这样的:

def main(): 
    hello() 

def hello(): 
    print "hello" 

我仍然需要调用的main(),或者是自动调用?

+0

请参阅[此问题](http://stackoverflow.com/questions/419163/what-does-if-name-main-do)以获取更多信息。 – 2013-03-21 20:06:59

回答

7

添加在文件的结尾:

if __name__ == '__main__': 
    hello() 
+2

如果你解释'__main__',即使看起来很明显也会更好。 – erm3nda 2015-09-21 15:59:24

2

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

或者,您可以使用-c参数来解释器来显式地从cli导入和运行你的模块,但这需要脚本放在你的python路径上,而且你现在也会是坏样式在Python模块之外执行Python代码。

0

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

def hello(): 
    print "hello" 

的定义是正确的,但是当你“呼叫”功能?

你的文件应该包括对hello()函数的调用:

def hello(): 
    print "hello" 

hello() 

这样,函数定义称为在一个文件中。

这是一个非常“剧本式”的方法......它的工作原理,但必须有一个更好的方式来做到这一点

2

print语句被封闭在一个函数定义块。您需要调用的函数,以便它来执行:

def hello(): 
    print "hello" 

if __name__ == '__main__': 
    hello() 

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