我在macbook上使用Terminal将数据打印到一个打开的文件中:
>>> out=open("test_output.txt","w")
>>> print("hello",file=out)
File "<stdin>", line 1
print("hello",file=out)
^
SyntaxError: invalid syntax
为什么会出现SyntaxError以及如何修复它?无论如何,相同的脚本在IDLE中运行良好。
PS:
这是Python 2.7,我实际安装了Python 3.5,但是NetworkX和Matplotlib的软件包都自动安装到Python 2.7的库中,所以这是我在进行社交网络分析时使用的平台。
答案 0 :(得分:5)
在我开始回答有关语法错误的问题之前,我首先需要告诉您有两个版本的Python。 Python 2和Python 3. Python 3是该语言的未来,也是IDLE安装中运行的版本。 Python 2是您在命令行中调用python
时使用的版本。
两者之间没有太大区别,但print
肯定是其中之一。 {3}中的{em>函数 print
,但python 2中的语句。这甚至意味着什么?在Python 2中,print不返回任何内容,只是将数据推送到命令行。在Python 3中,它实际上是返回的东西。这意味着在Python 3中,您可以执行以下操作:
a = print("thing")
在python 2中,如果我们要做同样的事情,我们会得到语法错误:
>>> a = print("thing")
File "<input>", line 1
a = print("thing")
^
SyntaxError: invalid syntax
因为print
是Python 3中的一个函数,所以可以为它提供额外的参数。这就是为什么你可以做print("thing", out=file)
之类的事情。在python 2中,等价物为print>>file, "thing"
。
所以,你现在有几个选择。您可以更改.py
文件以反映Python 2中的正确语法。您可以使用python 3运行文件而不是python 2,使用python3
在命令行中调用python。
答案 1 :(得分:3)
如果您希望上述代码可以在python-2(2.6以后)中移植,那么您需要从future module
导入print_function示例:
from __future__ import print_function
out=open("test_output.txt","w")
print("hello",file=out)
这个article列出了python-2.x中print语句的使用与python-3.x中print函数的区别。
答案 2 :(得分:2)
如果您正在使用终端
$ python filename.py
我几乎可以保证你在Python2中实际运行Python3代码(print(...)
)。尝试改为:
$ py -3 filename.py
看看这是否无法解决您的问题。
要确认,您可以这样做:
$ python --version