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

时间:2015-04-25 03:09:55

标签: 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

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

PS:

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

3 个答案:

答案 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