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 [2012/11/01 11:26]
127.0.0.1 editor externo
script:python:new:snippets [2020/05/09 09:25] (actual)
Línea 83: Línea 83:
 urllib2.install_opener(opener) urllib2.install_opener(opener)
 xml = urllib2.urlopen('​https://​api.del.icio.us/​v1/​posts/​recent'​).read() xml = urllib2.urlopen('​https://​api.del.icio.us/​v1/​posts/​recent'​).read()
 +</​code>​
 +==== Detectar el final de la ejecución ====
 +=== 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>​ </​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).
 +  * Puedes ejecutar un módulo cual si fuese un programa haciendo ''​python -m modulo''​. Por ejemplo, si quisiesemos abrir un servidor web en el directorio actual:
 +<​code>​
 +$ python -m SimpleHTTPServer
 +$ python -m SimpleHTTPServer 8080
 +$ python -m http.server
 +</​code>​
 ===== Snippets ===== ===== Snippets =====
 <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.1351769194.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)