Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

Quando si installa Python si ha a disposizione anche un elenco lunghissimo di moduli già pronti.

Oltre a questo elenco, altri moduli si possono scaricare dal Cheese Shop all'indirizzo:
http://cheeseshop.python.org/pypi

Eccone alcuni di quelli base, già installati:
 
sys
Il modulo sys è importante perchè definisce la variabile sys.path che non è altro che l'elenco di directory in cui Python cerca i moduli da caricare quando usiamo la parola chiave import.
Se non si riesce a importare un modulo che crediamo di aver installato, può essere utile verificare il valore di sys.path.
Altra variabile importante è sys.argv che è la lista degli argomenti passati al nostro script sulla riga di comando.
 
Esempio: (argomenti.py)
import sys
for arg in sys.argv:
    print arg
 
Da prompt:
python argomenti.py 1 2 3 prova
argomenti.py [0]
1 [1]
2 [2]
3 [3]
prova [4]
 
Tutti gli elementi della lista sys.argv sono considerati stringhe.

os
Utile quando si vuole interagire con il sistema operativo.
Ci permette di eseguire tutta una serie di operazioni senza preoccuparci se siamo su Windows, Linux, Mac OS...
 
chdir: permette di cambiare la directory di lavoro corrente.
rename: permette di rinominare un file
remove: permette di cancellare un file
path.exists: permette di verificare l'esistenza di un file
path.getsize: permette di conoscere le dimensioni di un file
path.isdir: permette di verificare se una directory esiste
path.split, path.basename, path.splitext : permettono di separare un percorso nelle tre parti directory, nome del file e estensione del file.

Esempio:
>>> import os
>>> os.path.split("C:/folder/file.zip")

('C:/folder','file.zip')

>>> os.path.splitext("C:/folder/file.zip")
('C:/folderfile','.zip')
>>> os.path.basename("C:/folder/file.zip")
'file.zip'
 
zipfile, tarfile, zlib, gzip, bz2
zipfile
ci permette di aprire, creare, modificare file inf ormato zip.
 
Gli altri ci permettono di gestire: tar, zlib, gz e bz2.
 
Esempio: (scriptzip.py)
import zipfile, sys
for zip in sys.argv[1:]: #escludo il nome dello script
    print "Contenuto %s" % zip
    file_zip = zipfile.ZipFile(zip, "r")
    for info in file_zip.infolist(): #contenuto dell'archivio
        print info.filename, info.date_time, info.file_size
 
Da Prompt:
python scriptzip.py elenco.zip
 
Altre cose che si possono fare con zipfile sono:
leggere il contenuto, e aggiungere file, non si possono invece eliminare dei file contenuti n un archivio .zip. Per farlo bisogna creare un nuovo archivio temporaneo che non contengo i file da eliminare e alla fine sostituirlo all'archivio originale.
 
shelve, pickle
shelve serve per creare un piccolo database object oriented, cioè in pratica viene usato per salvare in un file un oggetto di tipo avanzato per poi poterlo leggere in un secondo momento.
 
Esempio: Da IDLE Python
>>> import shelve
>>> db = shelve.open("db")
>>> class Videoteca:
                def __init__(self,nome):
                    self.nome = nome
>>> a = Videoteca("Fuori in 60 secondi")
>>> db["jc"] = a
>>> db.close()
 
Abbiamo creato un database di nome db contenente un oggetto di tipo Videoteca. E' stato usato db come un dizionario, usando una chiave jc per reperire e rileggere l'oggetto.
 
Ora chiudiamo l'IDLE così da resettare la memoria.
Ridefiniamo la classe Videoteca.
 
>>> import shelve
>>> class Videoteca:
                def __init__(self,nome):
                       self.nome = nome
>>> db = shelve.open("db")
>>> z = db["jc"]
>>> z.nome
'Fuori in 60 secondi'
 
Il modulo shelve usa il modulo pickle sia per trasformare gli oggetti in una sequenza di byte e salvarli su disco  sia per svolgere l'operazione inversa.
 
smtplib, urllib, ftplib
smtplib: per inviare email.
 
Esempio:
import smtplib
host = smptlib.SMTP("mail.server.it")
ret = host.sendmail("mittente@mail.it", "destinatario@altramail.it", "Ciao Destinatario")
 
urllib: per leggere il contenuto di un sito
 
Esempio:
import urllib
urllib.urlretrieve("http://www.pastuweb.com", "filelocale.html")
 
Salva il contenuto di www.google.com in locale su filelocale.html.
 
ftplib: per collegarci a un sito in ftp
per il collegamento in ftp dare un occhiata alla documentazione online sul modulo perchè bisogna specificare anche user e password per il login.
 
threading
Immaginiamo un programma che deve eseguire più operazioni NON in maniera sequenziale  MA PARALLELA. L'unica possibiltà che abbiamo è quella di utilizzare nel nostro codice dei THREAD. 
 
Esempio: (realizzazione di un WebSpider o WebCrawler, spider.py)
Legge tre indirizzi e salva le pagine in file locali.
 
import threading, urllib, time
urls = ['www.google.it', 'www.pastuweb.com', 'www.python.org']
class Esplora(threading.Thread): #sottoclasse della classe Threadin.Thread
    def __init__(self, url):
        threading.Thread.__init__(self) #costruttore classe madre, inizializzo il thread
        self.url = url
        self.status = -1
    def run(self):
        print "Sto leggendo %s" % self.url
        urllib.urlretrieve("http://%s" % self.url, self.url)
        print "Ho letto e salvato %s" % self.url
        print "alle ore %02d:%02d:%02d" % time.localtime()[3:6]
for url in urls:
    esplora_url = Esplora(url)
    esplora_url.start()
 
I tre Thread sono partiti in sequenza, hanno lavorato in parallelo e hanno terminato in tempi diversi i rispettivi compiti.
 
La classe Esporta eredita TUTTE le funzionalità della classe threading.Thread.
Queste semplici istruzioni permettono di parallelizzare l'esecuzione del codice.
 
NumPy
mette a disposizione con la sintassi Python delle librerie realizzate in modo nativo in codice C, fondendo la chiarezza di Python e la velocità di C per il calcolo numerico.
 
Si possono creare programmi che si occupano di calcolo matriciale, di algebra lineare, trasformate di Fourier.
 
SQLAlchemy
Ci permette di operare su un database relazionale impiegando oggetti avanzati.
Possiamo dimenticarci del codice SQL, delle tabelle e delle query.
SQLAlchemy è Object Relational Mapper.
 
Esempio:
Per estrarre tutti quelli che si chiamano "Francesco" da un ipotetica tabella di utenti, si scriverà:
 
s = utenti.select(utenti.c.nome=="Francesco").execute()
lista = s.execute.fetchall()
 
Dare un occhiata alla documentazione on-line per la connessione ad un database MySQL, Oracle, ecc.
Average (1 Vote)
The average rating is 5.0 stars out of 5.