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 [2011/11/24 13:25]
alfred
script:python:new:snippets [2020/05/09 09:25] (actual)
Línea 37: Línea 37:
 exec = path + os.sep + name # ruta completa del script exec = path + os.sep + name # ruta completa del script
 </​code>​ </​code>​
 +
  
  
Línea 44: Línea 45:
 s1 = subprocess.check_output('​ls'​) s1 = subprocess.check_output('​ls'​)
 s2 = subprocess.check_output(['​ls',​ '​-la'​]) s2 = subprocess.check_output(['​ls',​ '​-la'​])
 +
 +subprocess.getstatusoutput('​ls /​bin/​ls'​) ​                      # (0, '/​bin/​ls'​)
 +subprocess.getoutput(cmd)
 </​code>​ </​code>​
 +
  
 ==== Llamar webservices REST ==== ==== Llamar webservices REST ====
 +=== Llamada simple ===
 +<code python>
 +import urllib
 +data = urllib.urlopen(url).read()
 +</​code>​
 +=== Llamada pasando parámetros POST ===
 +<code python>
 +import urllib
 +url = '​http://​xxxxxxxxxxxxx'​
 +params = urllib.urlencode({
 + '​appid':​ appid,
 + '​context':​ context,
 + '​query':​ query
 +})
 +data = urllib.urlopen(url,​ params).read()
 +</​code>​
 +=== Llamada con autentificación ===
 +<code python>
 +import urllib2
  
 +delicious_user = 'Your del.icio.us username'​
 +delicious_pass = 'Your del.icio.us password'​
  
 +password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
 +password_manager.add_password(
 + None, '​https://​api.del.icio.us/',​ delicious_user,​ delicious_pass
 +)
 +auth_handler = urllib2.HTTPBasicAuthHandler(password_manager)
 +opener = urllib2.build_opener(auth_handler)
 +urllib2.install_opener(opener)
 +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>​
 +
 +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 =====
 +<code python>
 +print map(int, "10 20 30"​.split()) #​ [10, 20, 30]
 +</​code>​
 +<code python>
 +d = [1, 3, 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>​
script/python/new/snippets.1322141108.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)