O módulo csv permite ler e escrever arquivos de valores separados por vírgula de maneira simples. Se o arquivo não existir, ele será criado ao abrir em modo escrita.
import csv
with open("dados.csv", "w", encoding="utf-8", newline="") as f:
escritor = csv.writer(f)
escritor.writerow(["id", "produto", "preco"])
escritor.writerow([1, "Notebook", 4500.00])
escritor.writerow([2, "Mouse", 89.90])
escritor.writerow([3, "Teclado", 199.99])
with open("dados.csv", encoding="utf-8") as f:
leitor = csv.reader(f)
conteudo = list(leitor)
print(conteudo)
Módulo json
json.dumps() converte um objeto Python (dicionário, lista, string, número etc.) em uma string no formato JSON. O inverso é feito com json.loads().
import json
from pathlib import Path
dados = {
"usuario": "maria_silva",
"email": "maria@exemplo.com",
"ativo": True,
"interesses": ["Python", "Django", "SQL"]
}
texto_json = json.dumps(dados)
print(texto_json)
# Grava a string JSON em um arquivo
Path("config.json").write_text(texto_json, encoding="utf-8")
# Lê o conteúdo do arquivo e converte novamente para objeto Python
conteudo_arquivo = Path("config.json").read_text(encoding="utf-8")
objeto_recuperado = json.loads(conteudo_arquivo)
print(type(objeto_recuperado), objeto_recuperado)
Módulo sqlite3
O sqlite3 é um módulo da biblioteca padrão que fornece uma interface para interagir com bancos de dados SQLite. O SQLite é um banco leve, embarcado, que não exige um servidor separado. É adequado para aplicações de pequeno porte, mobile ou de desktop, embora não suporte recursos avançados como stored procedures.
Ferramentas gráficas como DB Browser for SQLite facilitam a visualização e edição do banco.
import sqlite3
import json
from pathlib import Path
# Supondo um arquivo "alunos.json" com uma lista de dicionários
alunos = json.loads(Path("alunos.json").read_text(encoding="utf-8"))
with sqlite3.connect("escola.db") as con:
# Cria a tabela caso não exista
con.execute("CREATE TABLE IF NOT EXISTS Alunos (id INTEGER, nome TEXT, curso TEXT)")
sql = "INSERT INTO Alunos VALUES (?, ?, ?)"
for aluno in alunos:
con.execute(sql, (aluno["id"], aluno["nome"], aluno["curso"]))
con.commit()
# Consulta simples percorrendo o cursor
with sqlite3.connect("escola.db") as con:
resultado = con.execute("SELECT * FROM Alunos")
for linha in resultado:
print(linha)
# Obtendo todos os registros de uma vez como uma lista de tuplas
with sqlite3.connect("escola.db") as con:
cursor = con.execute("SELECT * FROM Alunos")
registros = cursor.fetchall()
print(registros)
Módulo datetime
datetime permite representar, manipular e formatar datas e horários. strptime() transforma uma string em um objeto datetime, enquanto strftime() faz o caminho inverso. timedelta representa uma diferença entre datas e pode ser usada em operações aritméticas.
from datetime import datetime, timedelta
# Data fixa
inicio = datetime(2022, 5, 15)
print(inicio)
# Data e hora atuais
agora = datetime.now()
print(agora)
# Conversão a partir de string
data_convertida = datetime.strptime("2023/11/05", "%Y/%m/%d")
print(data_convertida)
# Cálculo de diferença
intervalo = agora - inicio
print(intervalo.days, "dias", intervalo.seconds, "segundos")
# Adicionando um timedelta
futuro = agora + timedelta(weeks=2, hours=3)
print(futuro)