2013-02-09 225 views
2

我打开一个终端并将其放入我的文档中,在那里我的名为trianglearea.py的.py文件是一个非常基本的程序,我尝试执行它。 我输入/ Documents $ python trianglearea.py到shell中并没有任何反应; bash提示我输入另一个命令,就好像我刚刚提示的那样不存在。我尝试./trianglearea.py,但我得到一个语法错误,因为我没有输入交互式Python和bash不理解我的Python脚本。如果我转到文件gui样式并双击并在终端中运行,窗口会闪烁并消失,但这不是我想要的。我想让我的小程序在交互式Python中运行,这样我就可以输入内容并实际使用我的功能。 这是我在the.py文件如何从bash shell执行.py脚本

def area(base,height): 
    ''' (number, number) - number 
    Return area of a triangle with dimensions base * height 

    >>>>area(10,5) 
    25.0 
    ''' 
    return base*height/2 

我知道这不应该是很难,但它已经难倒我。

+1

您的脚本不会执行任何操作。所以当你运行'python thing.py'时你看到的是非常正常的。 – Mat 2013-02-09 08:15:05

+0

http://stackoverflow.com/questions/13933169/how-to-execute-python-file-in-linux/13933251#13933251 – 2013-02-09 08:46:53

回答

1

假设如果你的脚本文件名是mycode.py那么你可以使用python -i mycode.py

$ python -i mycode.py 
>>> area(10, 5) 

-i当脚本被作为第一个参数传递或使用-c 选项,则在执行 脚本或命令后进入交互模式。 refrence

+0

python-i正是我一直想弄明白的,谢谢! – aaron 2013-02-09 08:32:56

+0

@arron很高兴,如果工作:) – 2013-02-09 08:33:45

5

没有任何反应的原因是因为您尚未在您的脚本中调用您的方法,所以该文件只是定义该方法,然后退出。这是一个快速解决方案:

def area(base,height): 
    ''' (number, number) - number 
    Return area of a triangle with dimensions base * height 

    >>>>area(10,5) 
    25.0 
    ''' 
    return base*height/2 

print area(10,5) # calling the method 

解决这个问题的正确方法是增加这个检查:

if __name__ == '__main__': 
    print area(10,5) 

当Python脚本命令行运行,特变__name__设置为字符串'__main__'(有关更多信息,请参见this answer)。如果声明基本上说,“如果我从命令行运行,请使用参数10和5执行方法区域并打印结果。”

最后,为了确保您的脚本可以像这样./myscript.py这样的提示符运行,您需要告诉shell如何执行它。这是通过将shebang line添加到文件顶部来完成的。

结合了这一切,你的文件看起来像:

#!/usr/bin/python 

def area(base,height): 
     ''' (number, number) - number 
     Return area of a triangle with dimensions base * height 

     >>>>area(10,5) 
     25.0 
     ''' 
     return base*height/2 

if __name__ == '__main__': 
    print area(10,5) 
+0

这是伟大的,善良的答案布尔汉,因为你,你的信用,没有采取像一些人那样嘲笑的机会。你应得到我的赞赏。 – sotapme 2013-02-09 09:43:23