为什么在打印到文件时会出现这个等号的SyntaxError?

Kat*_*ryn 3 python printing terminal

我在macbook上使用Terminal将数据打印到一个打开的文件中:

>>> out=open("test_output.txt","w")
>>> print("hello",file=out)
  File "<stdin>", line 1
    print("hello",file=out)
                      ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

为什么会出现SyntaxError以及如何修复它?无论如何,相同的脚本在IDLE中运行良好.

PS:

它是Python 2.7,我实际安装了Python 3.5,但是NetworkX和Matplotlib的软件包都自动安装到Python 2.7的库中,因此这是我在进行社交网络分析时使用的平台.

Gam*_*iac 6

在我开始回答有关语法错误的问题之前,我首先要告诉您有两个版本的Python.Python 2和Python 3. Python 3是该语言的未来,也是IDLE安装中运行的版本.Python 2是您python在命令行中调用时使用的版本.

两者之间没有太大区别,但print肯定是其中之一.print是Python 3中的一个函数,但在python 2中是一个语句.这甚至意味着什么?在Python 2中,print不返回任何内容,只是将数据推送到命令行.在Python 3中,它实际上返回了一些东西.这意味着在Python 3中,您可以执行以下操作:

a = print("thing")
Run Code Online (Sandbox Code Playgroud)

在python 2中,如果我们要做同样的事情,我们会得到一个语法错误:

>>> a = print("thing")
  File "<input>", line 1
    a = print("thing")
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

因为print是Python 3中的一个函数,所以可以为它提供额外的参数.这就是为什么你可以做类似的事情print("thing", out=file).在python 2中,等价物将是print>>file, "thing".

所以,你现在有几个选择.您可以更改您的.py文件以反映Python 2中的正确语法.您可以使用python 3来运行文件而不是python 2,python3以在命令行中调用python.