Buenas!
Recién empiezo y ya estoy mareado... :P
Una duda:
Tengo el siguiente programa sacado de un tutorial:
Citar#parahumanos.py
SUFIJOS = {1000: [ 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' , 'ZB' , 'YB' ] ,
1024: [ 'KiB ' , 'MiB ' , 'GiB ' , 'TiB ' , 'PiB ' , 'EiB ' , ' ZiB ' ,
'YiB ' ]}
def tamanyo_aproximado(tamanyo , un_kilobyte_es_1024_bytes=True ):
''' Convierte un tamaño de fichero en formato legible por personas
Argumentos/parámetros:
tamanyo __ tamaño de fichero en bytes
un_kilobyte_es_1024_bytes __ si True (por defecto),
usa múltiplos de 1024
si False, usa múltiplos de 1000
retorna : string
'''
if tamanyo < 0 :
raise ValueError ("el número debe ser no negativo")
multiplo = 1024 if un_kilobyte_es_1024_bytes else 1000
for sufijo in SUFIJOS [multiplo]:
tamanyo /= multiplo
if tamanyo < multiplo:
return ' {0:.1f} {1} ' . format ( tamanyo , sufijo)
raise ValueError ( 'número demasiado grande ' )
if __name__ == '__ main__':
print (tamanyo_aproximado (1000000000000 , False))
print (tamanyo_aproximado (1000000000000) )
Estoy usando Eclipse con PyDev
Al intentar interpretar dicho programa, me larga:
CitarFile "C:\Users\Usuario\Downloads\LABORATORIO\PYTHON\paraHumanos\src\paraHumanos.py", line 8
SyntaxError: Non-UTF-8 code starting with '\xf1' in file C:\Users\Usuario\Downloads\LABORATORIO\PYTHON\paraHumanos\src\paraHumanos.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
(La linea 8 es
Citar''' Convierte un tamaño de fichero en formato legible por personas
Si quito las triples comillas simples y pongo al comienzo de cada linea del bloque de comentarios el simbolo "#", sale el mismo error...
Perdon! Paso el codigo como corresponde, no como una cita! Si que estoy mareado :P
#parahumanos.py
SUFIJOS = {1000: [ 'KB' , 'MB' , 'GB' , 'TB' , 'PB' , 'EB' , 'ZB' , 'YB' ] ,
1024: [ 'KiB ' , 'MiB ' , 'GiB ' , 'TiB ' , 'PiB ' , 'EiB ' , ' ZiB ' ,
'YiB ' ]}
def tamanyo_aproximado(tamanyo , un_kilobyte_es_1024_bytes=True ):
''' Convierte un tamaño de fichero en formato legible por personas
Argumentos/parámetros:
tamanyo __ tamaño de fichero en bytes
un_kilobyte_es_1024_bytes __ si True (por defecto),
usa múltiplos de 1024
si False, usa múltiplos de 1000
retorna : string
'''
if tamanyo < 0 :
raise ValueError ("el número debe ser no negativo")
multiplo = 1024 if un_kilobyte_es_1024_bytes else 1000
for sufijo in SUFIJOS [multiplo]:
tamanyo /= multiplo
if tamanyo < multiplo:
return ' {0:.1f} {1} ' . format ( tamanyo , sufijo)
raise ValueError ( 'número demasiado grande ' )
if __name__ == '__ main__':
print (tamanyo_aproximado (1000000000000 , False))
print (tamanyo_aproximado (1000000000000) )
Coloca esto en la cabecera de tu archivo
#!/usr/bin/python
# -*- coding: utf-8 -*-
El problema es que estas usando tildes en los comentarios, y necesitas decirle explictamente que use el encoding utf8 para que entienda esos tildes.
De hecho si ingresas a la pagina que te sale en el error te explica ahí detalladamente.
https://www.python.org/dev/peps/pep-0263/
CitarDefining the Encoding
Python will default to ASCII as standard encoding if no other
encoding hints are given.
To define a source code encoding, a magic comment must
be placed into the source files either as first or second
line in the file, such as:
# coding=<encoding name>
or (using formats recognized by popular editors)
#!/usr/bin/python
# -*- coding: <encoding name> -*-
or
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
Joya! Gracias!!!!!