import dominatefrom dominate.tags import *doc = dominate.document(title='Main Page')with doc.head: meta(charset="utf-8")with doc.body: h1("hello!")print(str(doc))Инфа по процессору, памяти, диску и сети
psutilimport psutilimport os, sys, timepid = os.getpid()p = psutil.Process(pid)print('Process info:')print(' name :', p.name())print(' exe :', p.exe())data = []while True: data += list(range(100000)) info = p.memory_full_info() # Convert to MB memory = info.uss / 1024 / 1024 print('Memory used: {:.2f} MB'.format(memory)) if memory > 40: print('Memory too big! Exiting.') sys.exit() time.sleep(1)Process info: name : Python exe : /usr/local/Cellar/.../PythonMemory used: 11.82 MBMemory used: 14.91 MBMemory used: 18.77 MBMemory used: 22.63 MBMemory used: 26.48 MBMemory used: 30.34 MBMemory used: 34.19 MBMemory used: 38.05 MBMemory used: 41.90 MBMemory too big! Exiting.Кроссплатформенный мониторинг изменений файловой системы
watchdog from watchdog.observers import Observerfrom watchdog.events import (PatternMatchingEventHandler, FileModifiedEvent, FileCreatedEvent)observer = Observer()class Handler(PatternMatchingEventHandler): def on_created(self, event: FileCreatedEvent): print('File Created: ', event.src_path) def on_modified(self, event: FileModifiedEvent): print('File Modified: %s [%s]' % ( event.src_path, event.event_type))observer.schedule(event_handler=Handler('*'), path='.')observer.daemon = Falseobserver.start()try: observer.join()except KeyboardInterrupt: print('Stopped.') observer.stop() observer.join()File Created: ./secrets.txtFile Modified: . [modified]File Modified: ./secrets.txt [modified]File Modified: ./secrets.txt [modified]File Modified: ./secrets.txt [modified]File Modified: ./secrets.txt [modified]Stopped.API maker -
Internet APIs for web services.
hughug is a library that provides an extremely simple way to createInternet APIs for web services.
import hugimport webcolors@hug.get()def hextoname(hex: hug.types.text): return webcolors.hex_to_name('#' + hex)@hug.get()def nametohex(name: hug.types.text): return webcolors.name_to_hex(name)$ curl http://localhost:8000/hextoname?hex=ff0000"red"$ curl http://localhost:8000/nametohex?name=lightskyblue"#87cefa"import arrowt0 = arrow.now()print(t0)t1 = arrow.utcnow()print(t1)difference = (t0 - t1).total_seconds()print('Total difference: %.2f seconds' % difference)2016-06-26T18:43:55.328561+10:002016-06-26T08:43:55.328630+00:00Total difference: -0.00 secondsВремя в человеческом виде
'just now'
>>> t0 = arrow.now()>>> t0.humanize()'just now'
>>> t0.humanize()'seconds ago'>>> t0 = t0.replace(hours=-3,minutes=10)>>> t0.humanize()'2 hours ago'import parsedatetime as pdtcal = pdt.Calendar()examples = [ "2016-07-16", "2016/07/16", "2016-7-16", "2016/7/16", "07-16-2016", "7-16-2016", "7-16-16", "7/16/16", "19 November 1975", "19 November 75", "19 Nov 75", "tomorrow", "yesterday", "10 minutes from now", "the first of January, 2001", "3 days ago", "in four days' time", "two weeks from now", "three months ago", "2 weeks and 3 days in the future",]print('{:30s}{:>30s}'.format('Input', 'Result'))print('=' * 60)for e in examples: dt, result = cal.parseDT(e) print('{:<30s}{:>30}'.format('"' + e + '"', dt.ctime()))Input Result============================================"2016-07-16" Sat Jul 16 16:25:20 2016"2016/07/16" Sat Jul 16 16:25:20 2016"2016-7-16" Sat Jul 16 16:25:20 2016"2016/7/16" Sat Jul 16 16:25:20 2016"07-16-2016" Sat Jul 16 16:25:20 2016"7-16-2016" Sat Jul 16 16:25:20 2016"7-16-16" Sat Jul 16 16:25:20 2016"7/16/16" Sat Jul 16 16:25:20 2016