Python 3.2 print(end ='')错误

Dis*_*ami 2 python printing python-3.x

我是一个天生的业余编程新手,试图在Linux上使用Geany学习Python 3(3.2).我一直在尝试在Swaroop CH的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='')
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Gre*_*ill 11

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

#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)

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

./poem.py
Run Code Online (Sandbox Code Playgroud)

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

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

python poem.py
Run Code Online (Sandbox Code Playgroud)

然后python运行的将是你的PATH中的第一个(键入python --version以查看哪一个).您仍然可以使用以下命令显式运行Python 3:

python3 poem.py
Run Code Online (Sandbox Code Playgroud)

这应该适合你.


Gar*_*tty 8

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

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

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

另请注意PEP8建议:

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

与你的模式参数一样.

  • @ccpizza:``with``语句处理正确关闭文件,因此它比你的例子更有弹性. (2认同)