Por que o modo de novas linhas universais foi preterido no Python?


26

Acabei de notar que o recurso universal de nova linha das operações de arquivo parece estar saindo.

A documentação para openo modeparâmetro do Python 3.5 indica que ele foi descontinuado:

'U' modo de novas linhas universais (descontinuado)

Pelo menos em Python 3.2, opencontém um aviso "somente compatibilidade com versões anteriores" semelhante ao documentar o uso do modeargumento:

'U' modo de novas linhas universais (para compatibilidade com versões anteriores; não deve ser usado em novo código)

Mesmo no Python 2.7, um aviso semelhante é colocado na documentação de io.open.

Qual o motivo disso?


2
A lógica por trás disso é bastante simples. Considera-se mais "pitonico" nomear coisas do que coisas sem nome. Então você usa um parâmetro nomeado em vez de um sinalizador de caracteres. A ideia da flag é uma sobra da implementação C do Python e não é de admirar que esteja sendo eliminada.
World Engineer

Como os arquivos são abertos no modo de nova linha universal por padrão.
Boris

Respostas:


37

A open()função na biblioteca Python 3 tem um newlineargumento. Configurá-lo para Noneativar novas linhas universais. Essa é a maneira aceita de fazê-lo, tornando o mode='U'argumento redundante.

Use newline=Nonepara ativar o modo de novas linhas universais (esse é o padrão).


5
Parece que eu não entendi. Eu li como dizendo que as novas linhas universais em geral estavam sendo preteridas, não apenas o caractere de modo. Obrigado por esclarecer isso.
Jpmc26

6

Depois de tropeçar nessa pergunta, atualizei a documentação para ficar mais claro sobre o que está acontecendo ( https://github.com/python/cpython/pull/11646/files ).

A entrada da tabela confundidamente enigmática 'U'desapareceu e, em vez disso, há um parágrafo mais abaixo que afirma:

É permitido um caractere de modo adicional 'U', que não tem mais efeito e é considerado obsoleto. Ele anteriormente ativou: term: universal newlinesno modo de texto, que se tornou o comportamento padrão no Python 3.0. Consulte a documentação do newline <open-newline-parameter>parâmetro : ref: para obter mais detalhes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.