Python 3.2 print( Ende=") Fehler
Ich bin geboren wieder amateur-Programmier-Anfänger, die versuchen zu lernen, Python 3 (3.2) mit Geany unter Linux. Ich hab schon versucht das zu überarbeiten, das folgende Beispiel, in Swaroop C H ' s Python 3 tutorial Mein code ist wie folgt:
#!/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='')
Kann ich nicht kompilieren Sie das Programm. Ich bekomme die folgende Fehlermeldung, die ich nicht verstehe:
SyntaxError: ('invalid syntax', ('poem.py', 19, 24, " print(line, end='')\n"))
Bekomme ich den gleichen Fehler beim ausführen der code unverändert. Es funktioniert, wenn ich entfernen end=' '
. Wenn ich es weglassen eine leere Zeile gedruckt wird, zwischen jeder Zeile des Gedichts.
Wäre ich dankbar für jede Hilfe/Erklärung.
- Sind Sie absolut sicher, dass Sie mit Python 3? Haben Sie versucht, führen Sie es als
python3 poem.py
? - Btw., dieses tutorial ist Autor scheint ein Anfänger (wie auch der schreckliche poet :p). Die Pythonic Weise zum Durchlaufen der Zeilen einer Datei ist
for line in pfile
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht Python 3.x installiert ist, oder Sie es nicht verwenden. Diese läuft bei mir gut unter Python 3.x, aber ich bekomme den Fehler, den Sie haben unter Python 2.x. Shebangs sind nicht eine Garantie, die Sie haben, geehrt zu werden von was auch immer Sie verwenden, um das Skript auszuführen, und wenn Sie den interpreter direkt, werden ignoriert. So versuchen Sie, machen Sie sicher, laufen Python ist3. Abhängig von Ihrer Umgebung, dies kann auf verschiedene Arten erfolgen, aber unter Unix, versuchen
python3
stattpython
(obwohl einige Distributionen wie Arch Linux mappython
zu Python 3.x undpython2
zu Python 2.x).Auf einer anderen Anmerkung, alle Dateien sind iterables in Python, so dass Sie viel besser tun:
Beachten Sie auch PEP8 schlägt vor:
Als in Ihrem Modus-Argumente.
for line in open('poem.txt'): print(line, end='')
with
statement-handles schließen der Datei korrekt, so ist es widerstandsfähiger als dein Beispiel.with
würde arbeiten sauberer als die gute alteopen
. Könntest du bitte ein Beispiel geben oder einen link?with
- Anweisung wird einefinally
block löscht die Datei öffnen, während Ihr Beispiel nicht.__exit__
handler. Macht Sinn.Ihre Datei enthält eine richtige "shebang" - Zeile Python 3:
Jedoch, um für diese shebang Zeile wirksam wird, müssen Sie die Ausführung Ihres Skripts direkt als:
(Sie mag damit zu tun haben
chmod +x poem.py
zu machen das script ausführbar.)Wenn Sie explizit ausführen der Python-interpreter:
dann die
python
dass ausgeführt wird, wird die erste sein, die in Ihrem PFAD (Typpython --version
um zu sehen, welcher das ist). Können Sie noch ausführen, Python 3, die explizit mit:sollte für Sie arbeiten.