Python puede detectar automáticamente qué convención de nueva línea se utiliza en un archivo, gracias al "modo de salto de línea universal" (U
), y se puede acceder Python adivinar a través del atributo newlines
de objetos de archivo:
f = open('myfile.txt', 'U')
f.readline() # Reads a line
# The following now contains the newline ending of the first line:
# It can be "\r\n" (Windows), "\n" (Unix), "\r" (Mac OS pre-OS X).
# If no newline is found, it contains None.
print repr(f.newlines)
Esto le da al final de nueva línea de la primera línea (Unix, DOS, etc.), si alguna.
Como señaló John M., si por casualidad tiene un archivo patológico que utiliza más de una nueva línea de codificación, f.newlines
es una tupla con todas las codificaciones de nueva línea encontradas hasta el momento, después de leer muchas líneas.
Referencia: http://docs.python.org/2/library/functions.html#open
Si sólo desea convertir un archivo, sólo tiene que hacer:
with open('myfile.txt', 'U') as infile:
text = infile.read() # Automatic ("Universal read") conversion of newlines to "\n"
with open('myfile.txt', 'w') as outfile:
outfile.write(text) # Writes newlines for the platform running the program
La misma pregunta como http: // stackoverflow.com/questions/121392/how-to-determine-the-line-ending-of-a-file (excepto la etiqueta 'python' :-) – Jonik