我是一个重生的业余编程新手,试图在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=' '
,它就可以正常工作。如果我省略了它,诗的每一行之间都会印上一行空白。
如有任何帮助/解释,我将不胜感激。
您的文件包含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
这应该对你有用。
您没有安装Python 3.x,或者没有使用它。这在Python 3.x下对我来说运行得很好,但我在Python 2.x下得到了您的错误。Shebangs不是一个守护者,无论您使用什么来运行脚本,它们都必须受到尊重,如果您直接运行解释器,它们将被忽略。所以试着确保你正在运行Python3。根据您的环境,这可能会以不同的方式完成,但在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建议:
当用于指示关键字参数或默认参数值时,不要在"="符号周围使用空格。
就像在模式参数中一样。