Servidor web per a descàrrega ràpida de fitxers

Body

Una manera fàcil d'encendre un servidor web, tant a la teua LAN com a internet, és mitjançant el servidor HTTP de python, on fàcilment veus els fitxers locals al navegador de l'altre equip amb http://adreça_ip:8000


python -c “import SimpleHTTPServer; SimpleHTTPServer.test();”

Per tal d'aturar-lo, nomès cal fer CTRL+C.

artícles
23

Un script que em diu la informació bàsica que em cal per als equips de la meua feina

Body

I ací el codi del dia, un script que vaig fer el dilluns per als equips amb Windows de la feina, perquè sempre em cal saber aquestes dades en multitud d'ordinadors, aproximadament 300 ordinadors amb distintes versions de Windows, Java, etc.


#!/usr/bin/env python
# -*- coding: utf-8 -*-
#

import platform, subprocess, socket, getpass, sys, os
from urllib2 import urlopen

# Quin sistema operatiu? Quina versió del sistema? Quina xarxa?
#

print
print 'Nombre de Usuario :', getpass.getuser()
print 'Sistema :', platform.system()
print 'Version :', platform.version()
process = os.popen('wmic memorychip get capacity')
result = process.read()
process.close()
totalMem = 0
for m in result.split(" \r\n")[1:-1]:
totalMem += int(m)
print 'Memoria RAM total :', totalMem / (1024**3), 'Gigas'
print 'Nombre de la red :', platform.node()
print 'IP local :', str(([ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][:1])).replace("['", "").replace("']", "")

print 'IP publica :', urlopen('http://ip.42.pl/raw').read()
print
print 'La version de Java es: '
sp = subprocess.Popen(["java", "-version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print sp.communicate()
print sp.wait()
print

artícles
23

Executant una ordre del sistema operatiu des d'un script Pyhton

Body

Molt semblant a l'article anterior, on es pot veure com executar Lynx com a ordre dins d'un script python, ací deixe un altre exemple d'executar una ordre del sistema en el que estiguem treballant, un Red Hat Fedora, al meu cas, on envie un correu de proves amb l'ordre mail:


import os
cmd = os.popen("echo 'bla' | mail -s subject bla@bla.com")
enviem = cmd.read()
cmd.close()
print enviem

artícles
23

Executar urls funcionant en background amb Lynx

Body

Per al crontab de manera que s'execute el dia, mes, hora, minut i segon que vullgues:


lynx --dump http://la_teu_url > /dev/null

Per als teus scripts python:


import os
# executem una url per consola, li passem el resultat al /dev/null
filename = "http://la_teu_url"
cmd = os.popen("lynx -dump %s" % filename + '> /dev/null')
output = cmd.read()
cmd.close()
print output

artícles
23

Mètode Toplevel() per obrir noves finestres a la nostra aplicació Tkinter

Body

Tal com s'explica a http://effbot.org/tkinterbook/toplevel.htm , quan volem obrir noves finestres que siguen tancades si es tanca l'aplicació, farem ús del métode Toplevel() del tkinter. Ací un exemple:


#fiquem a una sola tupla el resultat del SELECT i enmagatzenem el telèfon i el nom de la EELL
resultatMostrarTelefon = resultado[0]
variable_telefon = resultatMostrarTelefon[2]
variable_nomeell = resultatMostrarTelefon[1]

finestraTelefon = Toplevel()
finestraTelefon.attributes('-topmost', 1)
finestraTelefon.geometry('500x100+700+300')
finestraTelefon.title('Telèfon de ' + variable_nomeell)
labelTelefono = Label(finestraTelefon, text=variable_telefon, font=('times', 30, 'bold'))
labelTelefono.grid(row=0)
#finestraTelefon.mainloop()

artícles
23

Separant i centralitzant variables i funcions Python a un fitxer

Body

Així com a PHP fem els include quan volem afegir codi d'un altre fitxer que, pot ser, està a un altre directori o servidor, a Python també es poden separar les variables definides o les funcions de les nostres aplicacions amb un sys.path.append molt fàcilment.

Ací teniu un exemple de com centralitzar totes les funcions de la nostra aplicació al fitxer Funcions.py que tenim al mateix directori que el nostre programa py:


import os
include = lambda f: os.path.exists(f) and execfile(f)
include('Funcions.py')

Podem també afegir molts fitxers, de tal manera que podem treballar a un programa i dividir les distintes tasques o pantalles en distints fitxers:


import os
include = lambda f: os.path.exists(f) and execfile(f)
include('Registrar_client.py')
include('Registar_vivenda.py')
include('Llogar_vivenda.py')
include('Comprar_vivenda.py')

artícles
23

Solucionando el UnicodeDecodeError al generar un informe con Reportlab

Body

Creando mi informe me estaba dando este error de codifiación y me estaba volviendo loco:

Resulta que dicho error se debe a que ya que el programa completo Python está coficado con UTF-8 pues no se puede volver a hacer un encode de UTF-8, sino que hay que cambiarlo:

Mi solución ha sido:
unicode("texto", 'iso-8859-1')

Aquí el código que sí funciona:


from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import inch

doc = SimpleDocTemplate("exportacions\lista_simple.pdf",pagesize=A4,
rightMargin=72,leftMargin=72,
topMargin=72,bottomMargin=18)
#Creamos la lista "Story" y iniciamos la variable "styles"
Story=[]
styles=getSampleStyleSheet()

ptext = unicode("Alcalde: " + textalcalde.get() + "", 'iso-8859-1')
Story.append(Paragraph(ptext.strip(), styles["Normal"]))
Story.append(Spacer(1, 12))

#Finalment creem el document PDF
doc.build(Story)

artícles
23
Subscribe to categoria-python