El mòdul sys
conté funcionalitats específiques del
sistema. Ja hem vist que la llista sys.argv
conté
els arguments de la línia de comandes.
Example 14.1. Ús de sys.argv
#!/usr/bin/python # Filename: cat.py import sys def readfile(filename): '''Escriu un fitxer per la sortida estàndard.''' f = file(filename) while True: line = f.readline() if len(line) == 0: break print line, # atenció a la coma f.close() # El programa comença aquí if len(sys.argv) < 2: print 'No action specified.' sys.exit() if sys.argv[1].startswith('--'): option = sys.argv[1][2:] # elimina els primers dos caràcters de sys.argv[1] if option == 'version': print 'Version 1.2' elif option == 'help': print '''\ This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help''' else: print 'Unknown option.' sys.exit() else: for filename in sys.argv[1:]: readfile(filename)
$ python cat.py No action specified. $ python cat.py --help This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help $ python cat.py --version Version 1.2 $ python cat.py --nonsense Unknown option. $ python cat.py poem.txt Programming is fun When the work is done if you wanna make your work also fun: use Python!
El programa emula la comanda cat tan coneguda pels usuaris de Linux/Unix. Simplement cal especificar els noms dels fitxers de text i el programa mostrarà el seu contingut per la sortida estàndard.
Quan s'executa un programa Python en mode no interactiu, sempre
hi ha un element com a mínim a la llista
sys.argv
. Es tracta del nom del programa en
execució i està disponible a sys.argv[0]
(recordem que Python comença a comptar a partir del 0).
La resta dels arguments apareixen a continuació d'aquest.
Per a fer el programa més amigable, he afegir certes opcions que
permeten a l'usuari obtenir més informació respecte al programa.
Aquestes opcions poden estar especificades al primer argument.
Si ens indiquen l'opció --version
, el programa
mostra el número de la versió del programa. En cas de que l'usuari
especifiqui l'opció --help
, el programa mostra
una petita explicació del seu funcionament. Fem servir la funció
sys.exit
per a finalitzar l'execució del
programa. Com sempre, podem trobar tots els detalls a
help(sys.exit)
.
Quan no s'especifica cap opció, i hi ha noms de fitxer a la línia de comandes, el programa simplement escriu totes les línies de cada fitxer en l'ordre especificat a la línia de comandes.
Per cert, el nom de la comanda cat és una abreviació de concatenate (concatenació) que és bàsicament el que el programa fa: mostra el contingut d'un fitxer o concatena dos o més fitxers junts a la sortida.
La cadena sys.version
ens ofereix informació
respecte la versió que tenim instal·lada de Python.
La tupla sys.version_info
ens ofereix
una manera fàcil de tractar les parts dels nostres programes
que són específiques per una determinada versió de Python.
[swaroop@localhost code]$ python >>> import sys >>> sys.version '2.3.4 (#1, Oct 26 2004, 16:42:40) \n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]' >>> sys.version_info (2, 3, 4, 'final', 0)
Per als programadors experimentats, el mòdul sys
inclou altres elements interessants, com ara
sys.stdin
, sys.stdout
i
sys.stderr
que es corresponen amb l'entrada
estàndard, la sortida estàndard i la sortida estàndard d'error
respectivament.