2013-02-09 349 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