En nylig artikkel i Rødt Hattmagasin ved Noah Presang og Grig Gheorghiu kalte “this isn’t din grandpappy’d dd kommando demonstrerte hvordan å bruke Pyton, dd nytten og Google Diagramet API å produsere et bardiagram som viser gjennomstrømning på forskjellige blokkstørrelser. Men utgangen fra Pytonen skrifttype var ikke den aktuelle grafiske fremstillingen men en URL som du da måtte til masse inn i en Vev nettleser å sikte det resulterende diagramet.
Jeg skjønt denne skrifttypen ville være nyttig men har ikke villet måtte skjære og masse en URL inn i en Vev nettleser slik jeg bestemte å meg eliminere det trinnet.
Denne Pyton skrifttype er løst basert på deres skrifttype men bruker Pytonen urllib biblioteker om å kople til Google Diagramer å generere et PNG avbildearkiv som deretter er vist bruke pygtk + rutiner. #!/Usr/bin/env pytonimport sys importoperativsystemimport kommanderer import ang. fra optparse import Optionparser import urllib import urllib2 import pygtk pygtk.require(’2.0′) import gtk klasse Displaygraph : def stryker_begivenhet (selv, widget, begivenhet, data=none) : Returner Falsk def ødelegger (selv, widget, data=none) : Gtk. hovedledning_slutter () def __init__(self): Selv.vindu = gtk.window(gtk.window_toplevel) self.window.connect(“delete_event”, selv. stryker_begivenhet) self.window.connect(“destroy”, selv.ødelegger) self.window.set_border_width(10) self.window.set_position(gtk.win_pos_center) self.window.set_title(“disk Gjennomstrømning”) pixbuf = gtk.gdk.pixbuf_new_from_file(“/tmp/dd.png”) os.remove(“/tmp/dd.png”) selv.avbilde = gtk.image() self.image.set_from_pixbuf(pixbuf) selv. avbilde. utstilling () self.window.add(self.image) selv. vindu. utstilling () def main(self) : Gtk.main() klasse Googlechart : def __init__(self): Selv. gchart_url = “http://chart.apis.google.com/chart?” selv. gchart_type = “cht=bvs” selv. gchart_tittel = “&chtt=” selv. gchart_data = “&chd=t:” selv. gchart_merker = “&chxl=0:ø” selv. gchart_størrelse = “&chs=400×250″ selv. gchart_akse_merker = “&chxt=x,y,x,y” selv. gchart_akse_posisjon = “&chxp=2,50ø3,50″ selv. gchart_sperrer_innstillinger = “&chbh=30,15″ def tittel (selv, tittel) : Selv. gchart_tittel = selv. gchart_tittel + tittel def skriver (selv, data, merker, max_t) : Selv. gchart_data = selv. gchart_data + data.rstrip(‘,’) selv. gchart_merker = selv. gchart_merker\ + merker + “2:øblock%20sizeø3:ømb/s” selv. gchart_akse_rekkevidde = “&chxr=1,0,” + str(max_t+10.0) selv. gchart_skalering = “&chds=0,” + str(max_t+10.0) selv. gchart_url += selv. gchart_type\ + selv. gchart_tittel + selv. gchart_størrelsesselv. gchart_url += selv. gchart_bar_innstillinger\ + selv. gchart_data + selv. gchart_merker selv. gchart_url += selv. gchart_akse_merker\ + selv. gchart_akse_posisjonsselv. gchart_url += selv. gchart_akse_rekkevidde\ + selv. gchart_skalering åpnere = urllib2.urlopen(self.gchart_url) hvis opener.headersæ innhold-type] = ! ‘image/png’: Hev Badcontenttypeexception (‘server responderte’\’with en innhold-type %s’\ % opener.headersæ innhold-type]) åpner (får “/tmp/dd.png”, ‘wb’).write(opener.read()) def_skive_gjennomstrømning (innretning, blocksize) : Blocksize = str (blocksize) + ‘k’ cmd = “dd hvis = /dev/null av = % s ber = %s” % (innretning, blocksize) utgang = kommandoer. getoutput (cmd) gjennomstrømning = 0 enheter = “” for ledning i output.split(‘n’): S = re.search(‘ kopierte, .*, (\S +) (ØS+)$’, ledning) hvis s : Gjennomstrømning = s.group(1) enhet = s.group(2) bruddretur (gjennomstrømning, enhet) hvis __kaller__ == “__main__”: Praksis = “usage: % Prog alternativer” parser = Optionparser (praksis = praksis) parser.add_option(“-d”, “–device”, dest = ”device”,\hjelp = ”device å bruke. Skivedata blir overskrevet ! ”) (alternativer, args) = parser. parsing_args () innretning = alternativer.innretning hvis ikke innretning : parser. trykk_hjelper ()

























