Herramientas de usuario

Herramientas del sitio


script:python:new:snippets

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
script:python:new:snippets [2013/02/08 11:01]
alfred [Llamar webservices REST]
script:python:new:snippets [2020/05/09 09:25] (actual)
Línea 85: Línea 85:
 </​code>​ </​code>​
 ==== Detectar el final de la ejecución ==== ==== Detectar el final de la ejecución ====
-==== Crear un log ====+=== Utilizar atexit ​=== 
 +''​atexit''​ permite indicar una función que se llamará al finalizar la ejecución:​ 
 +<code python>​ 
 +import atexit 
 +def all_done():​ 
 +    print '​all_done()'​ 
 +print '​Registering'​ 
 +atexit.register(all_done) 
 +print '​Registered'​ 
 +</​code>​
  
 +Este código dará como resultado:
 +<​code>​
 +Registering
 +Registered
 +all_done()
 +</​code>​
 +
 +Podemos pasar parámetros:​
 +<code python>
 +import atexit
 +def my_cleanup(name):​
 +    print '​my_cleanup(%s)'​ % name
 +atexit.register(my_cleanup,​ '​first'​)
 +atexit.register(my_cleanup,​ '​second'​)
 +atexit.register(my_cleanup,​ '​third'​)
 +</​code>​
 +
 +=== Detectar un CTRL+C ===
 +Se ha de detectar la ''​KeyboardInterrup'':​
 +<code python>
 +try:
 +    start_thread()  ​
 +except (KeyboardInterrupt,​ SystemExit):​
 +    cleanup_stop_thread();​
 +    sys.exit()
 +</​code>​
 +==== Conocer las direcciones de la máquina ====
 +Para UNIX existe el paquete ''​netifaces'':​
 +<code python>
 +from netifaces import interfaces, ifaddresses,​ AF_INET
 +for ifaceName in interfaces():​
 +    addresses = [i['​addr'​] for i in ifaddresses(ifaceName).setdefault(AF_INET,​ [{'​addr':'​No IP addr'​}] )]
 +    print '%s: %s' % (ifaceName, ', '​.join(addresses))
 +</​code>​
 +Derivado de este código cómo conseguir una ip pública:
 +<code python>
 +from netifaces import interfaces, ifaddresses,​ AF_INET
 +for ifaceName in interfaces():​
 +    for i in ifaddresses(ifaceName).setdefault(AF_INET,​ [{'​addr':'​127.'​}] ):
 +        if not i['​addr'​].startswith("​127."​):​
 +            return i['​addr'​] ​
 +</​code>​
 ===== Tips ===== ===== Tips =====
   * Para configuración podemos agregar un fichero settings.py al proyecto. Este contendría un diccionario con las configuración deseada (par: clave, valor).   * Para configuración podemos agregar un fichero settings.py al proyecto. Este contendría un diccionario con las configuración deseada (par: clave, valor).
Línea 98: Línea 149:
 <code python> <code python>
 print map(int, "10 20 30"​.split()) #​ [10, 20, 30] print map(int, "10 20 30"​.split()) #​ [10, 20, 30]
 +</​code>​ 
 +<code python>
 d = [1, 3, 5] d = [1, 3, 5]
 d[-1] #​ 5 d[-1] #​ 5
 +</​code>​
 +<code python>
 +winners = set('''​washington adams jefferson jefferson madison madison ​
 +monroe monroe adams jackson jackson vanburen harrison polk taylor pierce buchanan'''​.split())
 +</​code>​
 +<code python>
 +def __init__(self,​ email, content, created=None):​
 +  self.email = email
 +  self.content = content
 +  self.created = created or datetime.datetime.now()
 +  # if created has value self.created will take it, if not self.created will be datetime.now()
 +</​code>​
 +==== zip function ====
 +<​code>​
 +>>>​ a = ['​a',​ '​b',​ '​c'​]
 +>>>​ c = [10, 33, 44]
 +>>>​ zip(a, c)
 +[('​a',​ 10), ('​b',​ 33), ('​c',​ 44)]
 +>>>​ dict(zip(a, c))
 +{'​a':​ 10, '​c':​ 44, '​b':​ 33}
 </​code>​ </​code>​
script/python/new/snippets.1360321287.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)