Python 3.2 print( end='') 错误
我是一名刚开始学习编程的新手,正在尝试在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 个回答
你的文件里有一行正确的“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
这样应该就能正常工作了。
你可能没有安装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建议:
在表示关键字参数或默认参数值时,不要在'='符号周围加空格。
就像你在模式参数中那样。