Zeilenabschlüsse, Lineendings, Zeilenumbruch --> anzeigen

Code-Stücke können hier veröffentlicht werden.
Antworten
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Montag 22. Mai 2006, 11:07

Hi!

Das hier ist ein kleines Programm, das Antwort auf die Frage geben kann, welche Lineendings in einem Programm verwendet werden.

Das ist besonders wichtig, wenn man öfter zwischen Windows und Linux wechselt oder bei der CGI-Programmierung.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
******************************************************************************
* Gibt die Zeilenendzeichen für jede Zeile aus.
*
* filename: showendings.py
******************************************************************************
"""

import sys


#----------------------------------------------------------------------
def main():
    
    crlf = 0
    lf = 0
    cr = 0
    unknown = 0

    # Dateiname herausfinden
    try:
        filename = sys.argv[1]
    except:
        sys.stderr.write("Bitte geben Sie den Dateinamen an.\n")
        sys.exit(1)
    
    f = file(filename, "r")
    try:
        for linenumber, line in enumerate(f):

            print "%-4s" % (linenumber + 1),
            clean_line = line[:20].replace("\r", "")
            clean_line = clean_line.replace("\n", "")
            print "%-20s ..." % clean_line,

            if line.endswith("\r\n"):
                crlf += 1
                print "CRLF"
            elif line.endswith("\n"):
                lf += 1
                print "LF"
            elif line.endswith("\r"):
                cr += 1
                print "CR"
            else:
                unknown += 1
                print "<unknown> -->",
                print [ord(ch) for ch in line ], "-->", line
    finally:
        f.close()
        
    print
    print "CRLF:", crlf
    print "LF:", lf
    print "CR:", cr
    print


#----------------------------------------------------------------------
if __name__ == "__main__":
    main()
Ein Aufruf könnte so aussehen:

Code: Alles auswählen

gerold@gpw ~ $ python showendings.py xxxx.py
1    #!/usr/bin/env pytho ... LF
2    # -*- coding: utf-8  ... LF
3    """                  ... LF
4    ******************** ... LF
5    * Description:       ... LF
6    *                    ... LF
7    * Created:      2005 ... LF
8    * Requirements: Pyth ... LF
9    *               GTK+ ... LF
10   ******************** ... LF
11   """                  ... <unknown> --> [34, 34, 34] --> """

Anzahl CRLF: 0
Anzahl LF: 10
Anzahl CR: 0
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten