Python peut détecter automatiquement quelle convention nouvelle ligne est utilisée dans un fichier, grâce au "mode newline universel" (U
), et vous pouvez accéder à Python deviner par l'attribut newlines
des objets fichier:
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)
Cela donne à la fin de retour à la ligne de la première ligne (Unix, DOS, etc.), si tout. Comme John M. l'a souligné, si par hasard vous avez un fichier pathologique qui utilise plus d'un codage de nouvelle ligne, f.newlines
est un tuple avec tous les codages de nouvelle ligne trouvés jusqu'à présent, après avoir lu plusieurs lignes.
Référence: http://docs.python.org/2/library/functions.html#open
Si vous voulez juste convertir un fichier, vous pouvez simplement faire:
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
Même question que http: // stackoverflow.com/questions/121392/how-to-determine-the-line-ending-of-a-file (sauf celui de 'python' :-) – Jonik