Python reconoce lo siguiente como instrucción que define la codificación del archivo:
# -*- coding: utf-8 -*-
Definitivamente vi este tipo de instrucciones antes ( -*- var: value -*-
). ¿De dónde viene? ¿Cuál es la especificación completa, por ejemplo, puede el valor incluir espacios, símbolos especiales, nuevas líneas, incluso a -*-
sí mismo?
Mi programa escribirá archivos de texto sin formato y me gustaría incluir algunos metadatos en ellos utilizando este formato.
# coding: utf-8
# coding: utf8
trabajos listos para usar con Python 2.7, incluso fuera de PyCharm. (Yo uso SublimeText).Respuestas:
Esta forma de especificar la codificación de un archivo Python proviene de PEP 0263 - Definición de codificaciones de código fuente de Python .
GNU Emacs también lo reconoce (consulte la Referencia del lenguaje Python, 2.1.4 Declaraciones de codificación ), aunque no sé si fue el primer programa en utilizar esa sintaxis.
fuente
# -*- coding: utf-8 -*-
es una cosa de Python 2. En Python 3+, la codificación predeterminada de los archivos fuente ya es UTF-8 y esa línea es inútil.Ver: ¿Debo usar la declaración de codificación en Python 3?
pyupgrade
es una herramienta que puede ejecutar en su código para eliminar esos comentarios y otras sobras que ya no son útiles de Python 2, como hacer que todas sus clases heredenobject
.fuente
Esto se llama variables locales de archivo, que Emacs entiende y establece de manera correspondiente. Consulte la sección correspondiente en el manual de Emacs : puede definirlos en el encabezado o en el pie de página del archivo
fuente
En PyCharm, lo dejaría fuera. Apaga el indicador UTF-8 en la parte inferior con una advertencia de que la codificación está codificada. No piense que necesita el comentario de PyCharm mencionado anteriormente.
fuente
test1 = 'äöü'
esta, te indicará que agregues un encabezado al archivo. (pycharm 2019.1)