web-dev-qa-db-fra.com

Pourquoi le mode de saut de ligne universel est-il déconseillé en Python?

Je viens de remarquer que la fonction niversal Newline des opérations sur les fichiers semble être en voie de disparition.

La documentation pour le paramètre Python 3.5 openmode indique qu'il est obsolète:

'U' mode de saut de ligne universel (obsolète)

Au moins aussi loin que Python 3.2, open contient un avertissement similaire de "compatibilité descendante uniquement" lors de la documentation de l'utilisation de mode argument:

'U' mode de saut de ligne universel (pour la compatibilité descendante; ne doit pas être utilisé dans le nouveau code)

Même dans Python 2.7, un avertissement similaire est placé dans la documentation de io.open .

Quelle en est la raison?

27
jpmc26

La fonction open() dans la bibliothèque Python 3 possède un argument newline. Le définir sur None permet les nouvelles lignes universelles. C'est la façon acceptée de le faire, ce qui rend le mode='U' argument redondant.

Utilisation newline=None pour activer le mode de saut de ligne universel (c'est la valeur par défaut).

39
Robert Harvey

Après être tombé sur cette question, j'ai mis à jour la documentation pour être plus clair sur ce qui se passe ( https://github.com/python/cpython/pull/11646/files ).

L'entrée de table cryptiquement confuse pour 'U' a disparu, et à la place il y a un paragraphe plus bas qui dit:

Un caractère de mode supplémentaire est autorisé, 'U', qui n'a plus aucun effet et est considéré comme obsolète. Il permettait auparavant: term: universal newlines en mode texte, qui est devenu le comportement par défaut dans Python 3.0. Reportez-vous à la documentation de: ref: newline <open-newline-parameter> paramètre pour plus de détails.

7
ncoghlan