Python reconhece o seguinte como instrução que define a codificação do arquivo:
# -*- coding: utf-8 -*-
Eu definitivamente vi esse tipo de instruções antes ( -*- var: value -*-
). De onde isso vem? Qual é a especificação completa, por exemplo, o valor pode incluir espaços, símbolos especiais, novas linhas e até -*-
ele próprio?
Meu programa estará escrevendo arquivos de texto sem formatação e eu gostaria de incluir alguns metadados neles usando este formato.
# coding: utf-8
# coding: utf8
funciona imediatamente com o Python 2.7, mesmo fora do PyCharm. (Eu uso o SublimeText).Respostas:
Essa maneira de especificar a codificação de um arquivo Python vem do PEP 0263 - Definindo codificações de código fonte do Python .
Também é reconhecido pelo GNU Emacs (consulte Referência da linguagem Python, 2.1.4 Declarações de codificação ), embora eu não saiba se foi o primeiro programa a usar essa sintaxe.
fonte
# -*- coding: utf-8 -*-
é uma coisa do Python 2. No Python 3+, a codificação padrão dos arquivos de origem já é UTF-8 e essa linha é inútil.Consulte: Devo usar a declaração de codificação no Python 3?
pyupgrade
é uma ferramenta na qual você pode executar seu código para remover esses comentários e outras sobras não úteis do Python 2, como herdar todas as suas classesobject
.fonte
Isso é chamado de variáveis locais de arquivo, que são entendidas pelo Emacs e configuradas de forma correspondente. Veja a seção correspondente no manual do Emacs - você pode defini-los no cabeçalho ou no rodapé do arquivo
fonte
No PyCharm, eu deixaria de fora. Ele apaga o indicador UTF-8 na parte inferior com um aviso de que a codificação é codificada. Não pense que você precisa do comentário sobre o PyCharm mencionado acima.
fonte
test1 = 'äöü'
essa, sugerirá que você adicione esse cabeçalho ao arquivo. (pycharm 2019.1)