Python 无法从putty运行.py文件,语法错误:word意外(应为“)”)

Python 无法从putty运行.py文件,语法错误:word意外(应为“)”),python,linux,raspberry-pi,sudo,chmod,Python,Linux,Raspberry Pi,Sudo,Chmod,我对Python和Linux都是新手,因此请尽可能用最少的假设知识进行简单的解释,但是我非常愿意投入时间和精力来学习 我有一个运行Linux的Raspberry Pi 2(Model B V1.1)。我通过putty与这个pi交互 我试图创建一个简单的竞争反射游戏,由2个按钮和一个LED组成。我的目标是让LED灯在短时间内亮起,第一个按下按钮的玩家获胜 我正在用python(特别是2.7.3)为此编写脚本 我的问题是我无法从putty中运行任何.py文件,我总是收到相同的错误: Syntax e

我对Python和Linux都是新手,因此请尽可能用最少的假设知识进行简单的解释,但是我非常愿意投入时间和精力来学习

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

我试图创建一个简单的竞争反射游戏,由2个按钮和一个LED组成。我的目标是让LED灯在短时间内亮起,第一个按下按钮的玩家获胜

我正在用python(特别是2.7.3)为此编写脚本

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

Syntax error: word unexpected (expecting ")")
为了确定问题是否是代码中的错误,我创建了一个非常简单的.py文件,以检查是否发生了相同的错误,它确实发生了。因此,我目前认为,即使我的代码是功能性的,也有某种东西阻止我运行任何.py文件

我使用的过程如下:

首先,我从putty中创建一个新的python文件:

sudo nano test.py
接下来我输入python代码(目前非常简单,因为我无法运行任何.py文件)

然后按CTRL+O来写入文件,按enter,然后按CTRL+X退出

最后,我使用

sudo chmod u+x test.py
试着运行它

sudo ./test.py
同样,也会发生类似的错误

Syntax error: "(" unexpected
然后,我决定使用

sudo python

>>>for each in range(5):
...    print 'hello'
这一次输出是期望的结果:

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

我们非常感谢您能深入了解造成这种情况的原因,如果我没有提供足够的信息来帮助您,我深表歉意


提前谢谢

简短回答:要么以
python filename.py
的形式运行这些文件,要么添加一行
#/usr/bin/python
到python脚本的顶部

详细回答:当您在Linux中从命令行运行一个文件时(Raspberry Pi正在运行),默认情况下,它假定该文件是一个shell脚本文件(通常是Bash脚本)。因此,它使用bashshell(或其他shell,但通常是Bash)来解释文件,而Bash不知道Python语法。如果要使用不同的解释器(在本例中为Python)运行文件,则必须在文件顶部添加一条“魔线”,以
#开头(通常发音为“hash bang”,有时简称为“shebang”)。遵循
#字符是要使用的解释器的完整路径,例如python脚本的
/usr/bin/python
。(您也可以使用
/usr/bin/env-python
作为另一个答案;我更喜欢
/usr/bin/python
,因为这样不可能得到错误的python解释器。但这涉及到的高级主题可能比您现在需要的更多。)

所以当你把这行代码放进去的时候/usr/bin/python
在python脚本的顶部,您告诉Linux系统使用哪个解释器来运行程序,然后它就可以正常工作了™.


另外,停止使用sudo编辑并运行这些!这只是自找麻烦。

如果您希望这样执行,则需要以下行作为第一行

#!/usr/bin/env python
这将告诉bash(或等效程序)使用Python解释器执行该文件

如果您不想这样做,则可以执行如下脚本:

$ python test.py
如果按此方法执行,则不需要授予脚本本身的执行权限


此外,除非绝对必要,否则不应使用sudo执行脚本。

ahh。请告诉我……+1您好,谢谢您详细(快速)的回复。我在离开大学的时候就发布了这篇文章,我会在回家的时候测试它,然后在这里更新我的学习方法。再次感谢!这正是我的问题,我的代码现在工作得很好,再次感谢您详细而翔实的回复!我也给了你+1,因为你的答案和我的一样好。(虽然现在我的可能要好一点,因为我花了一点时间来解释操作系统对Linux来说是新出现的情况)。+1感谢你的回应,你和iLoveTux分享了同样的智慧,我相信这会在我回家后解决我的问题,再次感谢:)哦,我想我把你的用户名弄错了,我不应该一边走路一边打字sorry@Ruthenium66-没问题,我们明白你的意思。:-)
$ python test.py