2011-05-11 51 views
0

我:輸入殼工作,但沒有終端

filename = input() 
with open(filename) as file: 
    print('It opened.') 

救了我的桌面,「test.py」上。

我從終端運行它,並獲得:

blahblahblah:~ rickyd$ python /users/rickyd/desktop/test.py 
/users/rickyd/desktop/tryme.txt 
Traceback (most recent call last): 
    File "https://stackoverflow.com/users/rickyd/desktop/test.py", line 1, in <module> 
    filename = input() 
    File "<string>", line 1 
    /users/rickyd/desktop/tryme.txt 
    ^
SyntaxError: invalid syntax 

當我在shell中運行它,它完美的作品:

>>> ================================ RESTART ================================ 
>>> 
/users/rickyd/desktop/tryme.txt 
It opened. 
>>> 

爲什麼是不是在終端工作?

有什麼辦法可以確保(至少對於沒有明確設計的代碼) shell和終端會給出相同的行爲,所以我不必分別檢查兩者嗎?

回答

4

當您在終端中運行它時,您正在使用Python 2運行它。這就是爲什麼它不起作用。

你在哪個操作系統上,你如何運行它?

+0

好斑點,但是你可能需要解釋大更名:) – 2011-05-11 09:11:43

+0

在Mac OS 10.6.5我。我不知道我如何運行它,是什麼意思;我有shell(相同版本的Python)的IDLE 3.1.2,並且我從終端運行「python」+ [程序路徑] + return。我不知道如何讓終端運行v3。 (希望這部分是爲什麼你要求更多信息。) – 2011-05-11 09:36:29

+0

也許調用'python3'會調用python 3.x.在輸入「python」並嘗試分析完成變體後,嘗試按「tab」。 – 9000 2011-05-11 09:55:24

1

您可以通過鍵入檢查命令行的Python版本:

C:\work>python -V 
Python 2.7.1 

(這是一個大寫字母V)或只是不帶任何選項鍵入蟒蛇,看着在一開始顯示的版本號的交互式提示信息。這似乎是2.x和3.x的問題,因爲3.x中的input()等同於2.x中的raw_input()(在2.x中,input()函數讀入並評估輸入爲python代碼,這就是爲什麼你會得到「無效語法」錯誤)。

4

你需要像

python3 /users/rickyd/desktop/test.py 

運行它應該工作

相關問題