Python. Interfacce testuali

Caso più semplice

# output
print(...)
# input
pippo = input(...)

# pulire lo schermo: usando tante righe vuote
print('\n' * 50)

# pulire lo schermo: usando le funzioni del S.O.
def clrDisp(numlines=50):
    if os.name == 'posix':
        os.system('clear')
    elif os.name in ('nt', 'dos', 'ce'):
        os.system('CLS')
    else:
        print('\n' * numlines)

Opzioni da riga di comando

Le due possibilità più famose per gestire le opzioni o i parametri da passare da riga di comando sono la lista sys.argv del modulo sys o il modulo, molto più elaborato, argparse.

Esempio con sys.argv. Se si salva il seguente codice in un file .py, esempio pippo.py, e lo si esegue da riga di comando aggiungendo dei parametri, per esempio python pippo.py ciao pluto, la lista sys.argv conterrà 3 oggetti. Il primo sarà il nome dello script e gli altri due le stringhe "ciao" e "pluto".

import sys
print("This is the name of the script: ", sys.argv[0])
print("Number of arguments: ", len(sys.argv))
print("The arguments are: " , str(sys.argv))

Ecco invece un esempio con argparse. Le opzioni e le regole per gestirle vengono memorizzate come attributi dell'oggetto ArgumentParser. Il parsin vero e proprio avviente in un secondo momento tramite il metodo parse_args() dell'ArgumentParse che crea a sua volta un oggetto in cui gli attributi sono le opzioni passate da riga di comando.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("pippo")
args = parser.parse_args()

if args.a == 'bello':
    print('Sono bello!')

Threads

MSVCRT (solo Windows)

import msvcrt
while True:
    if msvcrt.kbhit():
        pippo = msvcrt.getch()
        if pippo.decode('ASCII') == 'x':
            break

Curses

Linux e Mac: curses. Anche se si vuole sviluppare più semplicemente per tutte le piattaforme si può usare UniCurses.

In Windows non c'è curses. Si può usare UniCurses.