我是一个天生的业余编程新手,试图在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=' '
后,它可以正常工作。如果我省略它,则在诗的每一行之间都会打印一个空行。
我很感激任何帮助/解释。
答案 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建议:
当用于表示关键字参数或默认参数值时,请勿在'='符号周围使用空格。
与你的模式参数一样。