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.