J'utilise Python 2.6 pour lire le fichier encodé latin2 avec les fins de ligne Windows ('\ r \ n').Caractères de nouvelle ligne dans les fichiers non codés en ASCII
import codecs
file = codecs.open('stackoverflow_secrets.txt', encoding='latin2', mode='rt')
line = file.readline()
print(repr(line))
sorties: u'login: yabcok\n'
file = codecs.open('stackoverflow_secrets.txt', encoding='latin2', mode='r')
line = file.readline()
print(repr(line))
ou
file = codecs.open('stackoverflow_secrets.txt', encoding='latin2', mode='rb')
line = file.readline()
print(repr(line))
sorties: u'password: l1x1%Dm\r\n'
Mes questions:
- Pourquoi le mode texte n'est pas le mode par défaut? La documentation indique le contraire. Le module
codecs
est-il couramment utilisé avec les fichiers binaires? - Pourquoi les caractères newline ne sont pas supprimés de la sortie readline()? C'est ennuyeux et redondant.
- Existe-t-il un moyen de spécifier un caractère de nouvelle ligne pour les fichiers non codés en ASCII.
Je sais que les nouvelles lignes ne sont pas différentes mais le reste du texte est, donc je dois utiliser l'API des codecs. U est obsolète (http://docs.python.org/library/io.html#io.open), mais vous avez raison sur la note. J'utilise Windows XP et les résultats sont comme ci-dessus. –
Eh bien, je devrais vraiment passer à 2.6, mais je suis dans les derniers stades d'un plus grand projet et même je ne suis pas assez audacieux pour changer maintenant. Désolé de ne pas pouvoir vous aider. –