4 Stimmen

Erzwingen Sie nur "Leerzeichen" oder "Tabs" in Python-Dateien?

In Python gibt es eine Möglichkeit, die Verwendung von Leerzeichen oder Tabulatoren auf Dateiebene zu erzwingen?

Nun, vielleicht ist "erzwingen" zu stark ausgedrückt, eher eine "Empfehlung".

Ich erhalte ständig Patchdateien mit gemischter Einrückung, und das ist ärgerlich... (um es gelinde auszudrücken) Python selbst kann erkennen, wenn es ein Problem gibt, aber ich suche etwas, das auf Editor-Ebene das gleiche tut, wie es für das Zeichenset existiert.

Bearbeiten: Ok, meine Frage war nicht eindeutig, ich frage deshalb, weil ich ständig Korrekturen und Patches in jeder Mischung von Tabulator/Leerzeichen erhalte, die man sich vorstellen kann. Ich benutze Mercurial als DVCS, vielleicht existiert etwas auf dieser Ebene?

10voto

unutbu Punkte 769083

Tim Peters hat ein schickes Skript namens reindent.py geschrieben, das .py-Dateien in 4-Space-Einzüge und keine Tabs konvertiert. Es ist hier verfügbar, aber überprüfen Sie zuerst Ihre Distribution - es könnte gebündelt in einem Beispiele- oder Tools-Verzeichnis enthalten sein. (Auf dem neuesten LTS Ubuntu wird es vom python2.7-examples Paket bereitgestellt.)

Wenn Sie einen Mercurial-Haken einrichten können, sollten Sie in der Lage sein, alle Dateien durch reindent.py laufen zu lassen.

Übrigens, wenn Sie Unix verwenden, könnte Ihr System auch den expand (und unexpand) Befehl haben, die alle Tabs in Leerzeichen konvertieren (und Leerzeichen in Tabs). In diesem Fall denke ich jedoch, dass reindent.py das richtige Werkzeug ist.

5voto

gimel Punkte 78080

Schauen Sie sich das tabnanny Modul an: - Erkennung von mehrdeutiger Einrückung.

2voto

pheelicks Punkte 7321

Dies ist etwas, das Ihr Editor für Sie tun sollte. Die meisten Editoren (zum Beispiel Notepad++, es ist kostenlos) ermöglichen es Ihnen, festzulegen, ob beim Drücken von Tab eine Tabulatortaste oder eine bestimmte Anzahl von Leerzeichen erzeugt wird. Ich würde empfehlen, in allen Dateien zwei Leerzeichen anstelle von Tab zu verwenden (ich finde, dass 4 zu viel sind). Die Verwendung von Leerzeichen anstelle von Tabs ist besser, da Sie damit den Text sowohl über die Leertaste als auch über die Tabulatortaste einrücken können, ohne sich Gedanken darüber machen zu müssen, Ihre Dateien durcheinanderzubringen.

Wenn Sie Dateien haben, die eine Mischung enthalten, ist es nicht schwer, Ihr eigenes Skript zu schreiben, um Tabs in Leerzeichen umzuwandeln.

2voto

meduz Punkte 3478

Wie in PEP 8 erklärt wird, sollten Tabs und Leerzeichen nie gemischt werden. Ein File mit beidem könnte jedoch einfach ausgeführt werden... Wie dort beschrieben:

Die beliebteste Methode, Python einzurücken, ist ausschließlich mit Leerzeichen. Die zweitbeliebteste Methode ist ausschließlich mit Tabs. Code, der mit einer Mischung aus Tabs und Leerzeichen eingerückt ist, sollte in eine ausschließliche Verwendung von Leerzeichen umgewandelt werden.
Wenn der Python Befehlszeilen-Interpreter mit der Option -t aufgerufen wird, erfolgen Warnungen über Code, der Tabs und Leerzeichen unerlaubt mischt. Bei Verwendung von -tt werden diese Warnungen zu Fehlern. Diese Optionen werden dringend empfohlen!

Die Lösung besteht daher darin, standardmäßig zu verwenden:

python -t my_mixed_code.py

Um auf Editor-Ebene zu antworten, hängt dies vom Editor ab, bitte spezifizieren!

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