![]() |
Python mette a disposizione un modulo integrato chiamato calendar per lavorare con i calendari in maniera semplice ed efficace. In questo articolo vedremo tre script diversi per generare calendari testuali direttamente da terminale o da un'app CLI.
🗓️ 1. Calendario di un Solo Mese
import calendar
year = 2025
month = 7
print(calendar.month(year, month))
Questo script stampa il calendario di un singolo mese. Modifica i valori di year e month per visualizzare qualsiasi mese desiderato.
🖨️ Output
July 2025
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
📆 2. Calendario Completo di un Anno
import calendar
year = 2025
print(calendar.calendar(year))
Con questo semplice codice, puoi stampare tutto il calendario dell’anno indicato, mese per mese.
🖨️ Output (inizio dell'anno)
2025
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
(segue con aprile–dicembre)
🌟 3. Calendario con Evidenziazione del Giorno Corrente
import calendar
from datetime import datetime
def print_calendar_with_highlight(year, month):
today = datetime.today()
current_day = today.day if today.year == year and today.month == month else -1
cal = calendar.TextCalendar(calendar.MONDAY)
cal_str = cal.formatmonth(year, month)
HIGHLIGHT_START = "\033[96m"
HIGHLIGHT_END = "\033[0m"
lines = cal_str.splitlines()
highlighted_lines = []
for line in lines:
if current_day != -1:
day_str = str(current_day)
if ' ' + day_str + ' ' in line:
line = line.replace(' ' + day_str + ' ', HIGHLIGHT_START + '|' + day_str + '|' + HIGHLIGHT_END)
highlighted_lines.append(line)
print("\n".join(highlighted_lines))
# Uso
current_year = datetime.today().year
current_month = datetime.today().month
print_calendar_with_highlight(current_year, current_month)
🔍 Spiegazione Dettagliata
- Importazioni: vengono importati i moduli
calendar(per creare calendari) edatetime(per ottenere la data attuale). - Funzione
print_calendar_with_highlight: riceve anno e mese come input e genera il calendario del mese, evidenziando il giorno corrente se coincide con l'anno e mese passati. - Individuazione del giorno corrente: si usa
datetime.today()per ottenere la data odierna e confrontarla con il mese/anno richiesto. Se coincidono, si salva il numero del giorno. - Creazione del calendario:
TextCalendarcrea il calendario in formato testuale, partendo dal lunedì. Il calendario viene convertito in stringa riga per riga consplitlines(). - Evidenziazione con ANSI: se il giorno corrente è presente in una riga, viene sostituito con una versione colorata usando codici ANSI (nel nostro caso, colore ciano). Si utilizza
\033[96mper iniziare il colore e\033[0mper resettarlo. - Stampa finale: le righe modificate vengono stampate una dopo l’altra. Il giorno corrente apparirà evidenziato nel terminale.
🖨️ Output (esempio per il 3 luglio 2025)
July 2025 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 |9|10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Nota: la colorazione effettiva avviene solo su terminali che supportano i codici ANSI (es. Linux/macOS, Windows PowerShell).
✅ Conclusione
Questi tre script mostrano quanto possa essere potente ma semplice usare Python per gestire calendari. A seconda delle esigenze – dal calendario mensile a quello annuale, fino a soluzioni interattive – il modulo calendar può coprire molte esigenze senza librerie esterne.
Follow me #techelopment
Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment
