hamstergen
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 -*-
), por lo que asumo que Python no las inventó y no es el único que usa tales instrucciones.
¿De dónde viene esta sintaxis? ¿Existe una especificación completa, por ejemplo, puede el valor incluir espacios, símbolos especiales, saltos de línea, incluso -*-
¿sí mismo?
¿Qué otro software reconoce dicha sintaxis de metadatos?
Mi programa escribirá archivos de texto sin formato y me gustaría incluir algunos metadatos en ellos usando este formato.
andrea spadaccini
Esta forma de especificar la codificación de un archivo de Python proviene de PEP 0263 – Definición de codificaciones de código fuente de Python.
También es reconocido por GNU Emacs (ver Referencia del lenguaje Python, 2.1.4 Codificación de declaraciones), aunque no sé si fue el primer programa en usar esa sintaxis.
-
Por lo que puedo concluir del manual de Emacs, el valor puede ser cualquier expresión LISP, en particular, una cadena entre comillas dobles
– hamstergen
2 de febrero de 2011 a las 10:19
-
Gracias por el enlace de ánimo. Anteriormente tenía la impresión de que la directiva solo la usaba el editor de texto. Hasta ahora, nunca supe que el intérprete de python realmente analizaba el comentario si estaba presente en las dos primeras líneas del archivo.
– umeboshi
26 de diciembre de 2014 a las 3:08
Boris Verjovskiy
# -*- coding: utf-8 -*-
es una cosa de Python 2.
En Python 3.0+, la codificación predeterminada de los archivos fuente ya es UTF-8 para que pueda eliminar esa línea de forma segura, porque a menos que diga algo diferente a alguna variación de “utf-8
“, no tiene ningún efecto. Consulte ¿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 otros restos inútiles de Python 2, como heredar todas sus clases de object
.
Estas son las llamadas variables locales de archivo, que son comprendidas por Emacs y configuradas de manera correspondiente. Ver correspondiente sección en el manual de Emacs – puede definirlos en el encabezado o en el pie de página del archivo
-
Este tipo específico de variable local de archivo también lo entiende el propio intérprete de Python, no es solo para editores de texto. stackoverflow.com/questions/41680533/…
– Boris Verjovskiy
9 de enero de 2020 a las 4:25
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 crea que necesita el comentario de PyCharm mencionado anteriormente.
Esto es más fácil de recordar y funciona en mi editor, PyCharm.
# coding: utf-8
– crizCraig
27 de abril de 2012 a las 0:23
Usando
# coding: utf8
funciona de forma inmediata con Python 2.7, incluso fuera de PyCharm. (Uso SublimeText).– Basj
23 de febrero de 2018 a las 14:48
Archivo variable local en Emacs, galleta en SciTE, Codificando declaraciones en Python y Modelo en Vim.
– Vlastimil Ovčáčík
27 de abril de 2018 a las 17:44
@Cbhihe Esta pregunta no es sobre Python, no sobre lo que hace la instrucción o cómo funciona. Pregunta qué software anterior a Python lo inventó y si hay algo más que la codificación de archivos.
– hamstergen
4 de abril de 2019 a las 18:47