Python reconnaît ce qui suit comme instruction qui définit le codage du fichier:
# -*- coding: utf-8 -*-
J'ai certainement vu ce genre d'instructions avant ( -*- var: value -*-
). D'où est ce que ça vient? Quelle est la spécification complète, par exemple la valeur peut-elle inclure des espaces, des symboles spéciaux, des retours à la ligne, même -*-
elle - même?
Mon programme va écrire des fichiers texte brut et j'aimerais y inclure des métadonnées en utilisant ce format.
# coding: utf-8
# coding: utf8
des outils prêts à l'emploi avec Python 2.7, même en dehors de PyCharm. (J'utilise SublimeText).Réponses:
Cette façon de spécifier le codage d'un fichier Python provient de PEP 0263 - Définition des codages de code source Python .
Il est également reconnu par GNU Emacs (voir Référence du langage Python, 2.1.4 Déclarations d'encodage ), bien que je ne sache pas si c'était le premier programme à utiliser cette syntaxe.
la source
# -*- coding: utf-8 -*-
est une chose Python 2. Dans Python 3+, l' encodage par défaut des fichiers source est déjà UTF-8 et cette ligne est inutile.Voir: Dois-je utiliser une déclaration d'encodage dans Python 3?
pyupgrade
est un outil que vous pouvez exécuter sur votre code pour supprimer ces commentaires et autres restes inutiles de Python 2, comme si toutes vos classes héritentobject
.la source
C'est ce qu'on appelle des variables locales de fichier, qui sont comprises par Emacs et définies en conséquence. Voir la section correspondante dans le manuel Emacs - vous pouvez les définir soit en en-tête soit en pied de page du fichier
la source
Dans PyCharm, je le laisserais de côté. Il éteint l'indicateur UTF-8 en bas avec un avertissement que l'encodage est codé en dur. Ne pensez pas que vous avez besoin du commentaire PyCharm mentionné ci-dessus.
la source
test1 = 'äöü'
celle-ci, vous serez invité à ajouter un tel en-tête au fichier. (pycharm 2019.1)