Comment puis-je détecter les sauts de ligne DOS dans un fichier?
J'ai un tas de fichiers. Certains sont des fins de ligne Unix, nombreux sont DOS. Je voudrais tester chaque fichier pour voir si s'est formatée dos, avant je passer les fins de ligne.
Comment puis-je faire? Est-il un drapeau que je puisse tester? Quelque chose de semblable?
source d'informationauteur chiggsy
Vous devez vous connecter pour publier un commentaire.
Vous pouvez rechercher la chaîne de caractères pour
\r\n
. Que DOS de style de fin de ligne.EDIT: regardez cette
Python peut détecter automatiquement ce newline convention est utilisée dans un fichiergrâce à l ' "universel newline mode" (
U
), et vous pouvez accéder à Python deviner à travers lesnewlines
attribut de fichier objets:Ce qui donne le caractère de saut de ligne en fin de la première ligne (Unix, DOS, etc.), si tout.
Comme John M. souligné, si, par hasard, vous avez un pathologiques fichier qui utilise plus d'un retour à la ligne de codage,
f.newlines
est un tuple avec tous les newline codages trouvé à ce jour, après la lecture de plusieurs lignes.Référence: http://docs.python.org/2/library/functions.html#open
Si vous voulez convertir à un fichier, vous pouvez tout simplement faire:
(Python 2 seulement🙂 Si tu veux juste lire des fichiers texte, ms-DOS ou Unix-formaté, cela fonctionne:
Qui est, Python "universelle" lecteur de fichier automatiquement utiliser les différents marqueurs de fin de ligne, de les traduire, "\n".
http://docs.python.org/library/functions.html#open
(Merci poignée!)
Comme un complet débutant en Python & juste pour le fun, j'ai essayé de trouver quelques minimaliste moyen de vérifier cela pour un seul fichier. Cela semble fonctionner:
Modifier: simplifiée par John Machin commentaire (pas besoin d'utiliser des expressions régulières).
dos mais les sauts de ligne sont
\r\n
unix uniquement\n
. Donc il suffit de chercher pour\r\n
.À l'aide de grep & bash: