Zeilenabschlüsse, Lineendings, Zeilenumbruch --> anzeigen

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

Zeilenabschlüsse, Lineendings, Zeilenumbruch --> anzeigen

Beitragvon gerold » 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=]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[/code]
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder