2011-02-02 18 views
84

Python reconoce lo siguiente como instrucción que define la codificación del archivo:dónde viene esto: - * - coding: UTF-8 - * -

# -*- coding: utf-8 -*- 

definitivamente vi este tipo de instrucciones antes (-*- var: value -*-). ¿De dónde viene? ¿Cuál es la especificación completa, p. ¿Puede el valor incluir espacios, símbolos especiales, nuevas líneas, incluso -*-?

Mi programa estará escribiendo archivos de texto sin formato y me gustaría incluir algunos metadatos en ellos con este formato.

+3

Esto es más fácil de recordar y funciona en mi editor, PyCharm. '# codificación: utf-8' – crizCraig

+0

El uso de' #coording: utf8' funciona fuera de la caja con Python 2.7, incluso fuera de PyCharm. (Yo uso SublimeText). – Basj

Respuesta

58

Esta forma de especificar la codificación de un archivo Python proviene del PEP 0263 - Defining Python Source Code Encodings.

También es reconocido por GNU Emacs (ver Python Language Reference, 2.1.4 Encoding declarations), aunque no sé si fue el primer programa en usar esa sintaxis.

+3

Por lo que puedo concluir del manual de Emacs, el valor puede ser cualquier expresión LISP, en particular, una cadena de comillas dobles – hamstergene

+0

. Es bueno saberlo. Si la respuesta te satisface, ¿por qué no la aceptas? :) –

+0

Gracias por el enlace pep. Antes 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 en realidad analizó el comentario si está presente en las dos primeras líneas del archivo. – umeboshi

5

Esto se conoce como variables locales de archivos, que Emacs entiende y establece de manera correspondiente. Consulte el correspondiente section in Emacs manual - puede definirlos en el encabezado o en el pie de página del archivo

4

En PyCharm, lo dejo fuera. Desactiva 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.

Cuestiones relacionadas