Python 3.2 print(end ='')错误

时间:2012-02-11 19:00:17

标签: python printing python-3.x

我是一个天生的业余编程新手,试图在Linux上使用Geany学习Python 3(3.2)。我一直试图在Swaroop C H's Python 3 tutorial中重做以下示例。我的代码如下:

#!/usr/bin/env python3
# Filename: poem.py

poem = '''\
Programming is fun 
When the work is done 
if you wanna make your work also fun: 
    use Python!
'''

with open('poem.txt', mode = 'w') as pfile:
    pfile.write(poem)

with open('poem.txt', mode = 'r') as pfile:
    while True:
        line = pfile.readline()
        if len(line) == 0:
            break
        print(line, end='')

我无法编译程序。我收到以下错误,我不明白:

SyntaxError: ('invalid syntax', ('poem.py', 19, 24, "        print(line, end='')\n"))

运行代码时,我遇到同样的错误。删除end=' '后,它可以正常工作。如果我省略它,则在诗的每一行之间都会打印一个空行。

我很感激任何帮助/解释。

2 个答案:

答案 0 :(得分:11)

您的文件包含Python 3的正确“shebang”行:

#!/usr/bin/env python3

但是,为了使此shebang行生效,您必须直接运行脚本:

./poem.py

(您可能必须chmod +x poem.py才能使脚本可执行。)

如果您选择显式运行Python解释器:

python poem.py

然后运行的python将成为PATH中的第一个(python --version类型,以查看哪一个)。您仍然可以使用以下命令显式运行Python 3:

python3 poem.py

哪个适合你。

答案 1 :(得分:7)

您没有安装Python 3.x,或者没有使用它。这在Python 3.x下运行正常,但我得到你在Python 2.x下的错误。 Shebangs不是一个保证人,他们必须尊重你用来运行脚本的任何东西,如果直接运行解释器,将被忽略。因此,请确保您运行的是Python3。根据您的环境,这可能会以不同的方式完成,但在Unix下,请尝试python3而不是python(尽管某些发行版如Arch Linux将python映射到Python 3.x和{ {1}}到Python 2.x)。

另一方面,所有文件都是Python中的迭代文件,所以你做得更好:

python2

另请注意PEP8建议:

  

当用于表示关键字参数或默认参数值时,请勿在'='符号周围使用空格。

与你的模式参数一样。