如何从bash shell执行.py脚本

时间:2013-02-09 08:11:09

标签: python bash shell

我打开一个终端并cd到我的文件中,我的.py文件名为trianglearea.py,这是我正在尝试执行的一个非常基本的程序。 我在shell中键入/ Documents $ python trianglearea.py,没有任何反应; bash提示我输入另一个命令,好像我刚刚提示的那个不存在。我尝试./trianglearea.py但我得到一个语法错误,因为我没有进入交互式python和bash不理解我的python脚本。如果我去文件gui风格并双击并说在终端中运行一个窗口闪烁并消失,但这不是我想要的。我想让我的小程序在交互式python中运行,这样我就可以输入内容并实际使用我的函数了。 这就是我在.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

我知道这不应该那么难,但它让我很难过。

2 个答案:

答案 0 :(得分: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)。 if语句基本上说,“如果我从命令行运行,请使用参数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)

答案 1 :(得分:1)

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

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

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