5 Stimmen

Wie ein Python 2.6+ Skript zu schreiben, die anmutig mit älteren Python fehlschlägt?

Ich bin mit dem neuen Druck von Python 3.x und ich beobachtete, dass der folgende Code nicht kompilieren aufgrund der end=' ' .

from __future__ import print_function

import sys
if sys.hexversion < 0x02060000:
    raise Exception("py too old")

...
print("x",end=" ") # fails to compile with py24

Wie kann ich die neue Syntax weiter verwenden, aber das Skript so gestalten, dass es gut funktioniert? Ist es zwingend erforderlich, ein anderes Skript aufzurufen und in diesem Skript nur eine sichere Syntax zu verwenden?

8voto

Scott Griffiths Punkte 20629

Die einfache Methode für Python 2.6 ist einfach, eine Zeile wie hinzufügen:

b'You need Python 2.6 or later.'

am Anfang der Datei. Dies nutzt die Tatsache aus, dass Byte-Literale in 2.6 eingeführt wurden und daher alle früheren Versionen einen SyntaxError mit der von Ihnen geschriebenen Nachricht als Stack-Trace.

2voto

Mad Scientist Punkte 17347

Es gibt einige Vorschläge in diesem Frage hier aber es sieht so aus, als wäre das nicht ohne weiteres möglich. Sie werden ein Wrapper-Skript erstellen müssen.

2voto

Lie Ryan Punkte 57966

Eine Möglichkeit ist, Ihr Modul mit Python 2.x print-Anweisung zu schreiben, dann, wenn Sie es in Python 3 portieren wollen, verwenden Sie 2to3-Skript. Ich glaube, es gibt auch Skripte für die 3to2-Konvertierung, obwohl sie weniger ausgereift zu sein scheinen als 2to3.

Wie auch immer, in Bigger-Skripten sollten Sie immer die Domänenlogik und die Ein-/Ausgabe trennen; auf diese Weise werden alle Druckanweisungen/Funktionen in einer einzigen Datei gebündelt. Für die Protokollierung sollten Sie das Logging-Modul verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X