Seite 1 von 1

Zeilenabschlüsse, Lineendings, Zeilenumbruch --> anzeigen

Verfasst: Montag 22. Mai 2006, 11:07
von gerold
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
:-)