Python 3.2 print( end='') 错误

2 投票
2 回答
7541 浏览
提问于 2025-04-17 12:51

我是一名刚开始学习编程的新手,正在尝试在Linux上使用Geany学习Python 3(3.2)。我一直在尝试修改以下示例,这个示例来自Swaroop C H的Python 3教程。我的代码如下:

#!/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 个回答

11

你的文件里有一行正确的“shebang”代码,用于Python 3:

#!/usr/bin/env python3

不过,要让这行代码生效,你必须直接这样运行你的脚本:

./poem.py

(你可能需要先执行 chmod +x poem.py,这样才能让脚本可以执行。)

如果你选择明确地运行Python解释器:

python poem.py

那么运行的 python 将是你系统中路径(PATH)里的第一个(你可以输入 python --version 来查看是哪一个)。你仍然可以用下面的方式明确运行Python 3:

python3 poem.py

这样应该就能正常工作了。

8

你可能没有安装Python 3.x,或者没有在使用它。我在Python 3.x下运行这个是没问题的,但在Python 2.x下就会出现你遇到的错误。脚本开头的“shebang”并不能保证一定有效,它需要你运行脚本的工具来遵守。如果你直接运行解释器,这个“shebang”就会被忽略。所以,确保你是在运行Python 3。根据你的环境,这个操作可能会有所不同,但在Unix系统下,可以试试用python3来代替python(不过有些发行版,比如Arch Linux,会把python指向Python 3.x,而python2指向Python 2.x)。

另外,Python中的所有文件都是可迭代的,所以你最好这样做:

with open('poem.txt', mode='r') as pfile:
    for line in pfile:
        print(line, end='')

还有,PEP8建议:

在表示关键字参数或默认参数值时,不要在'='符号周围加空格。

就像你在模式参数中那样。

撰写回答