Ir para o conteúdo
PyPro PyPro
Artigos Cursos Projetos Missão Sobre nós Contato

Dicas Pythônicas

Como Exibir o Calendário de um Mês Específico em Python com Personalizações

Python oferece uma biblioteca chamada calendar que facilita essa tarefa.

Por Dilermando Piva Jr. · 27/01/2025

Olá, caro leitor! Seja muito bem-vindo à "Dicas Pythonicas", onde descomplicamos o Python para você.

Hoje, vamos explorar uma funcionalidade prática e muitas vezes subestimada: como exibir o calendário de um mês específico diretamente do terminal.

Seja para criar aplicações de agendamento, organizar tarefas ou simplesmente consultar datas, a biblioteca calendar do Python será nossa aliada. Vamos além do básico e mergulhamos em personalizações úteis!

 

Por Que Usar a Biblioteca calendar?

Além de gerar calendários, o módulo calendar permite:

Calcular dias da semana para datas específicas.

Verificar anos bissextos.

Personalizar formatos (texto, HTML).

Adaptar o primeiro dia da semana (ideal para países que iniciam a semana no domingo).

 

Exemplo 1: Calendário Simples (Formato Padrão)

O método calendar.month() gera uma representação textual do mês. Observe:

 

import calendar

 

# Gerar calendário de fevereiro de 2021 (mês que inicia na segunda-feira)

calendario = calendar.month(2021, 2)

print(calendario)

 

Saída:

 

February 2021

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

 

Explicação:

  • calendar.month(ano, mês) retorna uma string formatada.
  • Por padrão, a semana começa na segunda-feira  (0 = Monday, 6 = Sunday).
  • Dias de outros meses não são exibidos (espaços em branco no início/fim).

 

Exemplo 2: Personalizando o Primeiro Dia da Semana

Para adaptar ao formato que inicia no domingo, usamos TextCalendar:

 

import calendar

 

# Criar um calendário com domingo como primeiro dia (firstweekday=6)

calendario_personalizado = calendar.TextCalendar(firstweekday=6)

calendario_formatado = calendario_personalizado.formatmonth(2023, 1) # Janeiro de 2023 começa no domingo

print(calendario_formatado)

 

Saída:

January 2023

Su Mo Tu We Th Fr Sa

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

 

Detalhes:

  • TextCalendar(firstweekday) permite definir o dia inicial (0-6, segunda a domingo).
  • formatmonth(ano, mês) formata o calendário como string.

 

Exemplo 3: Calendário do Mês Atual (Dinâmico)

Combine com datetime para exibir o calendário de abril de 2025:

 

import calendar

from datetime import datetime

 

# Definir abril de 2025 como referência

ano = 2025

mes = 4

calendario_atual = calendar.month(ano, mes)

print(calendario_atual)

 

Saída:

 

April 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

 

Funções Úteis para Explorar

  • prmonth(ano, mês): Imprime o calendário diretamente (sem usar print).

 

calendar.TextCalendar().prmonth(2025, 4) # Abril de 2025

 

  • HTMLCalendar: Gera tabelas HTML (ideal para web apps).
  • calendar.weekday(ano, mês, dia): Retorna o dia da semana (0 = segunda).

 

Tratamento de Erros

A biblioteca lança exceções para datas inválidas. Use try-except para evitar crashes:

 

try:

calendar.month(2025, 13) # Mês 13 não existe!

except calendar.IllegalMonthError:

print("Erro: Mês inválido. Use valores entre 1 e 12.")

 

Dica Extra: Formatação Avançada

Personalize largura das colunas e altura das linhas com os parâmetros w (largura do dia) e l (linhas por semana):

 

calendario = calendar.month(2025, 4, w=4, l=2)

print(calendario)

 

Saída (com espaçamento ampliado):

 

April 2025

Mon Tue Wed Thu Fri Sat Sun

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

 

E assim...

A biblioteca calendar é poderosa e versátil. Com essas dicas, você pode integrar calendários em scripts de automação, aplicações CLI ou até gerar conteúdo para web. Que tal criar um calendário de metas pessoais ou um organizador de tarefas?

Espero que esta dica inspire você a explorar a biblioteca calendar e criar aplicativos que utilizam calendários de maneira eficiente. Fique atento à próxima edição, onde traremos mais dicas úteis para aprimorar suas habilidades em Python!

Um forte abraço,

 

Prof. Dr. Dilermando Piva Jr.
Idealizador do pyPRO
Visite: https://pypro.com.br para mais informações sobre Python, Ciência de Dados e Git/GitHub.

← Voltar para artigos

pyPRO - Python para todos.

Instagram YouTube LinkedIn X (Twitter)