Marco Barisione. Marco Barisione. I moduli Python

Documenti analoghi
I moduli Python. Marco Barisione. Cosa sono i moduli. Come scrivere un modulo. Importare un modulo (1) Importare un modulo (2) Importare un modulo (3)

Ingegneria degli Algoritmi (II parte pratica)

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

Python moduli classi e qualche funzione grafica di base

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

Programmazione orientata agli oggetti: le classi

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Comandi principali di Linux (1)

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Ulteriori comandi sui file

Linguistica Computazionale: esercitazioni

Cosa è importante: pom.xml Goal Plug-in Repository

Il DOS diagramma di flusso. I comandi del DOS. I comandi: vista funzionale. Parametri. Opzioni. I comandi: sintassi

Informatica! Appunti dal laboratorio 1!

Esame Laboratorio di Sistemi Operativi Cognome Nome Mat.

OOP: Object Oriented Programming

Directory. Le directory unix sono file.

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Analizzatori Lessicali con JLex. Giuseppe Morelli

Reti (già Reti di Calcolatori )

Sistema Operativo (Software di base)

Il linguaggio Python

Uso del terminale in ambiente UNIX

Funzioni, Stack e Visibilità delle Variabili in C

Elaborato Shell. Elementi di architettura e sistemi operativi 2016/2017

Sistemi Operativi 1. Mattia Monga. a.a. 2012/13. Dip. di Informatica Università degli Studi di Milano, Italia

Riprendiamo l esercizio calcolatrice

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Shell BASH. Variabili Redirezione

perror: individuare l errore quando una system call restituisce -1

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Laboratorio di Algoritmi e Strutture Dati

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Un piccolo esempio: script

Introduzione. Java HTTP. G. Prencipe

Ingegneria degli Algoritmi (II parte pratica)

Stringhe e allocazione dinamica della memoria

Codice Corso: UNX010. Durata: 3 giorni

Debug di un programma

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Tecnologie dell'informazione e della Comunicazione

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

SISTEMI DI ELABORAZIONE

Manipolazioni elementari di flussi di testo strutturati

Basi di Dati: Corso di laboratorio

Usare Python in Linux

SmallShell Piccolo processore comandi

Linguaggio C: introduzione

ancora sui moduli e sulla loro importazione

Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

rsystem Maximiliano Marchesi

Cenni di programmazione distribuita in C++ Mauro Piccolo

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Introduzione a Visual Studio 2005

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Introduzione all'uso del sistema operativo Ubuntu

Il concetto di Package

Laboratorio di programmazione

Gestione risorse (Windows)

INTRODUZIONE A VISUAL STUDIO

Il terminale o Prompt dei comandi e modifica della path versione XP

Scrivere testi - ed. Un programma che consente di creare file testo si dice editor. L editor standard e più semplice di UNIX è ed.

Calcolo rapido dei Numeri di Fibonacci con il linguaggio Python

Laboratorio di Python (con Linux)

appunti delle lezioni Architetture client/server: applicazioni client

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Le direttive del Preprocessore

Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Preparazione alle Esercitazioni

Aggiorna. La Funzione Aggiorna Listino Aggiornare Listino Pr7 / Le connessioni / Listino METEL. Aggiorna Lis no. Aggiornamento del listino

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

File System ext2. Struttura del filesystem ext2.

Laboratorio di Programmazione in rete

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Prova in itinere Esempio d esame 1

Modello client-server

Ingegneria del Software 1: Eclipse

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Programmazione web lato client con JavaScript. Marco Camurri 1

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

TUTORIAL IMPORTAZIONE DATI DA FOGLIO EXCELL WINKHOUSE

Editor di testo. Ing. Simone Brienza. Corso di laurea magistrale in Ingegneria Elettronica

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Mirko Mariotti. March 9, 2009

Primi passi col linguaggio C

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione

Program m azione di Sistem a 6

Come è memorizzato un documento su disco. Ogni documento è una sequenza di byte, cioè di numeri interi compresi tra 0 e 255, detti anche caratteri

Lezione 2: Comandi avanzati della Shell di Unix

Laboratorio di Programmazione in Rete

Transcript:

Marco Barisione Marco Barisione I moduli Python

Cosa sono i moduli Quando il programma cresce è necessario suddividere lo script in più parti In C non esiste il concetto di modulo I file vengono compilati separatamente I diversi file conscono ciò che si trova negli altri includendo gli header È necessario tenere gli header aggiornati con i sorgenti In Python i moduli sono normali sorgenti Per poter usare le funzioni, classi e variabili definite in un modulo è necessario importarlo 2

Come scrivere un modulo Per scrivere un modulo è semplicemente necessario scrivere il codice in un file "Questa è la doc-string del modulo somma.py" def somma(a, b): return a + b print "È stato importato il modulo" Se la prima riga del modulo è una stringa questa diventa la doc-string Il codice all interno del modulo viene eseguito Questo non vuol dire che la funzione è richiamata! Generalmente ciò che è fuori dalle funzioni e dalle classi serve per inizializzare il modulo o stampare informazioni si debug 3

import modulo Importare un modulo (1) Per riferirsi ad un membro del modulo è necessario accedervi con modulo.membro È il metodo più usato per importare Si evitano collisioni di nomi (fatto frequente in C) >>> import somma >>> print somma <module 'somma' from 'somma.py'> >>> print somma. doc Questa è la doc-string del modulo somma.py >>> print somma.somma(5, 3) 8 4

Importare un modulo (2) from modulo import funzione1, funzione2, classe1 Importa dal modulo solo poche funzioni o classi Se usato per le variabili non si ottiene il risultato aspettato Si crea una variabile locale con lo stesso nome e che si riferisce allo stesso oggetto di quella del modulo L assegnando di un nuovo valore alla variabile è locale Scomodo se bisogna importare molti membri del modulo >>> from somma import somma >>> print somma(5, 3) 8 5

Importare un modulo (3) from modulo import * Importa tutti i membri del modulo eccetto quelli che iniziano per _ Sporca il namespace locale, rischiando di creare conflitti Sconsigliato se non per alcuni moduli che usano altri metodi per evitare conflitti Ad esempio tutti i membri iniziano con lo stesso prefisso >>> from somma import * >>> print somma(1, 3) 4 6

Come viene trovato un modulo Il modulo sys contiene la variabile path Python cerca in tutte le directory indicate nella in sys.path fino a quando trova un modulo con il nome corrispondente sys.path è una normale lista È possibile aggiungere nuove directory di ricerca a runtime sys.path.append("~/moduli") All avvio di Python sys.path è inizializzato per contenere: La directory corrente Le directory indicate nella variabile d ambiente PYTHONPATH Alcune directory di default dipendenti dall installazione 7

Byte-compilazione Quando un file viene importato per la prima volta viene creato un file con lo stesso nome ma con estensione.pyc Nel file viene inserito il modulo byte-compilato L esecuzione di questo file non è più veloce, è solo più veloce la fase di caricamento Alla successiva esecuzione (se il file.py non è stato modificato) viene importato il file.pyc Un applicazione può essere distribuita solo con i file compilati, senza i file sorgente 8

Moduli compilati in linguaggio macchina Alcuni moduli possono essere scritti in C (o altri linguaggi) e compilati in linguaggio macchina Su Unix sono shared object con estensione.so Su Windows sono DLL con estensione.pyd In caso di conflitto dovuto all esistenza di due moduli con lo stesso nome, uno compilato e l altro sorgente viene importato quello compilato 9

Package Con package si intende una collezione di moduli Quandi i moduli crescono è naturale raggrupparli assieme Un esempio di possibile struttura è la seguente: suoni/ init.py formati/ effetti/ init.py wav.py mp3.py init.py eco.py All interno di ogni directory del package è necessario un file init.py 10

Importare da un package Normali forme di importazione da package sono: import suoni.formati.mp3 from suoni.formati import mp3 from suoni.formati.mp3 import Mp3File Per riferirsi a Mp3File si usano rispettivamente: suoni.formati.mp3 mp3.mp3file Mp3File from suoni.formati import * non può funzionare a causa delle limitazioni di alcuni file system Il problema può essere risolto inserendo in suoni/formati/ init.py una lista chiamata all con l elenco di tutti i moduli contenuti nel package all = ["mp3", "wav"] 11

main Spesso è utile poter importare un file ma poterlo eseguire anche separatamente È quindi necessario avere una sezione di codice eseguita solo se il modulo non è stato importato La variabile name contiene il nome del modulo Se il modulo è quello principale (non è stato importato) il suo nome è main def foo():... if name == " main ": # eseguito solo se è il modulo principale 12

os environ un dizionario contenente le variabili d ambiente popen(cmd, mode) apre una pipe da o per cmd chdir(path) cambia la directory corrente getcwd() ritorna la directory corrente chmod(path, mode) cambia il modo di path al modo numerico mode listdir(path) ritorna la lista di file e directory in path mkdir(path[, mode]) crea la directory path, il default di mode è 0777 remove(path) cancella il file path rmdir(path) cancella la directory (vuota) path rename(old, new) rinomina il file o directory old a new fork() ritorna 0 nel processo figlio, l id del processo filglio nel genitore (solo Unix) system(cmd) esegue il comando cmd 13

os.path isfile(path), isdir(path) ritornano vero se path è, rispettivamente, un file normale o una directory exists(path) vero se path esiste split(path) ritorna una tupla contenente il nome della directory di path e il nome del file dirname(path) equivalente a split(path)[0] basename(path) equivalente a split(path)[1] abspath(path) ritorna il percorso assoluto di path splitext(path) ritorna una tupla contenente nome del file ed estensione (. compreso) 14

shutil copyfile(src, dst) copia src su dst copytree(src, dst) copia la directory src su dst rmtree(path) cancella ricorsivamente la directory path 15

sys argv una lista contenente gli argomenti sulla linea di comando exit([arg]) esce dal programma, equivalente a lanciare un eccezione SystemExit path lista di directory in cui cercare i moduli stdin, stdout, stderr stream standard, possono essere sostituiti con altri file stdin, stdout, stderr, valori originali degli stream standard 16

glob glob(pathname) ritorna una lista di file che corrispondono a pathname Può contenere *,? e intervalli di caratteri Non viene eseguita l espansione di ~ >>> os.listdir ('.') ['1.gif', '2.txt', 'card.gif'] >>> import glob >>> glob.glob('./[0-9].*') >>> glob.glob('*.gif') ['1.gif', 'card.gif'] >>> glob.glob('?.gif') ['1.gif'] 17

math Contiene le funzioni matematiche principali pi pi greco ( ) ~ 3.1415926535897931 e ~ 2.7182818284590451 floor(n) approssima n all intero inferiore ceil(n) approssima n all intero superiore round(n) approssima n all intero più vicino fabs(n) ritorna il valore assoluto (a virgola mobile) di n Esiste la funzione globale abs che ha comportamento simile Le altre funzioni sono simili a quelle per il C contenute in math.h 18

exceptions Contiene la classe Exception dalla quale normalmente sono derivate le eccezioni Il costruttore di Exception accetta come argomento la descrizione dell errore Generalmente è sufficiente derivare da Exception e aggiungere una descrizione from exceptions import Exception class MioErrore(Exception): def init (self, descr="blah blah..."): Exception. init (self, descr) raise MioErrore raise MioErrore, "Messaggio di errore..." 19

socket socket(family, type) crea un nuovo socket, family è normalmente AF_INET, type è SOCK_STREAM o SOCK_DGRAM connect((host, port)) apre una connessione verso la porta port di host bind((host, port)) si mette in ascolto sulla porta port di host listen(n) imposta il massimo numero di connessioni in attesa accept() ritorna una tupla, contenente il nuovo socket della connessione e l indirizzo del client recv(n) legge al massimo n bytes Ritorna una stringa vuota quando il client ha chiuso il socket send(str) invia str sul canale close() chiude la connessione makefile(mode) ritorna un oggetto file associato al socket 20

ftplib from ftplib import FTP conn = FTP('ftp.python.org') conn.login() conn.cwd('pub/www.python.org/ftp/python') print 'Ecco cosa contiene la directory' conn.retrlines('list') output = open('readme', 'wb') conn.retrbinary('retr ' + 'README', conn.quit() output.write) 21

urllib (1) Esiste un modo ancora più facile per scaricare un file, sia esso locale, su un server ftp, su un server http ecc. from urllib import urlretrieve what = raw_input("cosa vuoi scaricare? ") outfile = raw_input("con che nome salvo il" " file? ") urlretrieve(what, outfile) 22

urllib (2) quote(s) ritorna s convertito in modo da poter essere utilizzato come indirizzo Web >>> print quote("www.xx.xx/~marco/") www.xx.xx/%7emarco/ quote_plus(s) come quote ma converte anche gli spazi in + unquote(s), unquote_plus(s) l inverso delle precedenti funzioni urlencode(diz) trasforma il dizionario in una stringa adatta ad essere passata ad uno script CGI >>> print urlencode({"nome": "Mario",... "cognome": "De Rossi"}) cognome=de+rossi&nome=mario 23

import poplib poplib p = poplib.pop3('pop3.xxx.xx') p.user("xxxx@xxx.xx") p.pass_("***") n_msg = len(p.list()[1]) for i in range(n_msg): p.quit() print "\n".join(p.retr(i+1)[1]) if (raw_input("cancello? ") == "OK"): p.dele(i) 24

smtplib msg = """From: <me@myself.com> To: <xxxx@xxx.xx> Ciao mondo!. """ import smtplib server = smtplib.smtp('smtp.xxx.xx') server.sendmail("me@myself.com", "xxxx@xxx.xx", msg) server.quit() 25