PyPills : Lezione 1 – os.system()


Buongiorno a tutti 🙂

In questo articolo inauguro un altra sezione, chiamata PyPills, cioè “Python in pillole”. Il mio obiettivo non è tanto quello di insegnare le cose base, in quanto la rete abbonda di materiale elettronico per imparare il Python, che già di per se è molto semplice. Quello che mi propongo di fare è fare luce sulle parti un pò nebulose. Una delle cose che ho più odiato nel Java era l’impossiblità di eseguire istruzioni di basso livello con un comando. Il C lo permette ma è un pò complicato lavorare sulle stringhe in quanto, come vi ricordo, per C una stringa è un array di caratteri, e come tale bisogna lavorare coi puntatori e non con gli operatori di concatenazione come il + (in C non esite per concatenare stringhe). Il python può. Questa è una frase chiave. Volete realizzare un missile per andare su marte? Python sicuramente potrà, ma potete realizzarci sicuramente un dispositivo usb per il lancio di missili (l’hanno fatto veramente). Come direbbe lo spot della Playstation 3 “Possibilità infinite” 😀 .

Tornando a noi, un comando veramente magico in Python è:

os.system(string command)

(notate che il tipo string l’ho inventato in quanto, vi ricordo, in python i tipi non vanno dichiarati esplicitamente). Cosa fa questo comando? La semplicità è potenza e viceversa, infatti questo comando esegue un comando di sistema. Quale comando? Un qualsiasi comando Unix o Dos (ma noi siamo in Unix, tant’è parleremo di questo 😛 ). Alcuni tra i più smaliziati diranno “vabbè ma non fa nulla che non si possa fare facendo uno script in bash” e ciò è sacrosanto, ma possiamo ad esempio creare il nostro bello scriptino e lanciarlo embedded all’ interno del nostro programma Python così:

import os

os.system(“./myscript.sh”)

Potente no?  Ve l’avevo detto io 😛 

Nella prossima lezione metteremo un pò da parte Python e vedremo un pò di comandi Unix molto utili, parleremo dei filtri e del pipelining.

Alla prossima!

Alfredo

7 thoughts on “PyPills : Lezione 1 – os.system()

  1. Ciao 😉
    Potresti spiegarmi perchè? Ero in assoluta buona fede perchè nella documentation di Python v.2.6.1 os.system() non viene segnalata come deprecata!
    Ciao!
    Alfredo

  2. Quello che dici tu è interessante ma parzialmente vero. Tutto dipende da che uso devi fare di questi comandi. Il comando os.system() dà un return code, che è 0 se tutto è andato bene e “qualcos’altro” se c’è stato un errore, insomma già è qualcosa. os.system() è valido quando si è interessati a fare qualcosa ma non si è interessati del risultato.. un esempio? Tempo fa ho creato un front-end testuale per gcc scritto in python.. non faceva altro che compilare un programma preso da input con il comando os.system(“gcc bla bla bla”).
    In quel caso non ero interessato al return code perchè il verbose di gcc mi diceva se c’erano stati errori.
    Dipende tutto dai contesti, per cose un pò più serie quello che dici è corretto 🙂
    Ciao!
    Alfredo

  3. Caro Alfredo ,
    ho cominciato a giocare da poco con python e sono incappato nel tuo bel blog. Mi era venuta voglia di utilizzare skype4py per ralizzare un bot che facesse chiamate al tel (leggendo dei log o lanciando degli alert), utile, no ?
    ad esempio utilizzando il sintetizzatore espeak,
    Una cosa che comincia così :

    from os import system
    def espeak(messaggio,velocita):

    system (“””espeak -vit -s””” + str(velocita) + ” ‘” + messaggio + “‘”)

    qualche idea ? Per ora mi sono limitato a fargli fare degli squilli a inervalli casuali… sarebbe simpatico farli leggere delle frasi !

    Bye
    Danilo

  4. Ciao Danilo.
    Sono felice che tu stia sperimentando la potenza di Python di tuo pugno. Solo pochi i linguaggi di alto livello che offrono una tale libertà, sia in termini di paradigmi di programmazione che di varietà di moduli. Le possibili applicazioni di Python sono infinite, dal web all’ intrusion detection.. la vera forza di python è il suo potere di “collante” tra vari programmi.
    Dacci dentro con la programmazione!
    Ciao!
    Alfredo

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...