无法从putty运行.py文件,语法错误:单词意外(期待“)”)

我对Python和Linux都是新手,因此请尽可能简单的解释,尽可能less的假设知识,但我更愿意投入时间和精力去学习。

我有一个运行Linux的Raspberry Pi 2(Model B V1.1)。 我通过腻子与这个pi交互。

我试图创build一个简单的竞争性reflection游戏,由2个button和一个LED组成。 我的目标是让LED在短时间内亮起,而第一个按下button的玩家赢得胜利。

我正在用python写这个脚本(特别是2.7.3)

我的问题是,我无法从putty内运行任何.py文件,我总是收到相同的错误:

Syntax error: word unexpected (expecting ")") 

要确定问题是否是我的代码中的错误,我创build了一个非常非常简单的.py文件,以检查是否发生相同的错误,并确实如此。 所以我现在相信,即使我的代码是function,一些阻止我运行任何.py文件。

我正在使用的过程如下:

首先我从putty创build一个新的python文件:

 sudo nano test.py 

接下来我input我的Python代码(现在非常简单,因为我无法获取任何.py文件来运行)

 for each in range(5): print 'hello' 

然后按CTRL + O写入文件,按回车键,然后按CTRL + X退出

最后,我使用可执行文件

 sudo chmod u+x test.py 

并尝试运行它

 sudo ./test.py 

再次发生类似的错误

 Syntax error: "(" unexpected 

然后我决定直接在python shell中input代码

 sudo python >>>for each in range(5): ... print 'hello' 

这一次输出是期望的结果:

 hello hello hello hello hello 

所以没有问题直接从shell执行python代码,我只是无法执行任何以前保存的.py文件

任何洞察什么可能造成这是非常赞赏,我很抱歉,如果我没有提供足够的信息对你有用。

提前致谢!

Solutions Collecting From Web of "无法从putty运行.py文件,语法错误:单词意外(期待“)”)"

简短的回答:可以将它们作为python filename.py运行,或者将#!/usr/bin/python行添加到Python脚本的顶部。

长的回答:当你从Linux的命令行(这是Raspberry Pi正在运行)运行一个文件时,默认情况下它假定这个文件是一个shell脚本文件(通常是Bash脚本)。 所以它使用Bash shell(或其他shell,但通常是Bash)来解释文件,而Bash不知道Python语法。 如果你想使用不同的解释器(在这种情况下是Python)来运行你的文件,你必须在文件的顶部添加一个“magic line”,以#!开头#! (通常发音为“hash-bang”,有时发音为“shebang”)。 在#! 字符是解释器使用的完整路径,例如Python脚本的/usr/bin/python 。 (你也可以使用/usr/bin/env python作为另外一个答案;我更喜欢/usr/bin/python因为不可能以这种方式得到错误的Python解释器,但是这是高级的话题,可能比你需要的要多马上。)

所以当你把#!/usr/bin/python放在你的Python脚本的最上面时,你要告诉Linux系统哪个解释器运行该程序,然后它应该是All Just Work™。

此外, 停止使用sudo来编辑和运行这些! 这只是要求麻烦。

如果你想这样执行,你需要下面一行作为第一行

 #!/usr/bin/env python 

这将告诉bash(或等价物)用Python解释器执行文件。

如果你不想这样做,那么你可以像这样执行脚本:

 $ python test.py 

如果你走这条路线,那么你不需要授予脚本本身的执行权限。

另外,除非绝对必要,脚本不应该用sudo执行。