Setup e primeiros scripts
Python instalado, ambiente virtual configurado e o primeiro script útil rodando em 15 minutos. Base sólida para todas as automações que vêm a seguir.
O que você vai aprender
- Instalar Python 3 no Linux, Windows e macOS
- Criar e ativar ambientes virtuais (venv) corretamente
- Usar pip e requirements.txt de forma profissional
- Manipular arquivos e pastas com pathlib (sem os.path antigo)
- Escrever o primeiro script de produção: organizar milhares de arquivos
1. Instalação do Python 3
Use sempre a versão 3.11 ou superior. Evite o Python 2 e instalações “quebradas” do sistema.
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install python3 python3-venv python3-pip -y
python3 --version
Windows
Baixe o instalador oficial em python.org. Marque a opção “Add python.exe to PATH” durante a instalação. Depois abra o PowerShell ou CMD e confirme:
python --version
pip --version
macOS
brew install python
python3 --version
2. Ambiente virtual (venv)
O venv isola as dependências do projeto. É obrigatório em qualquer automação séria.
# criar
python3 -m venv .venv
# ativar no Linux/macOS
source .venv/bin/activate
# ativar no Windows (PowerShell)
.venv\Scripts\Activate.ps1
# verificar
which python # deve apontar para .venv
pip list
Para desativar: deactivate.
3. Dependências e requirements.txt
Sempre fixe as versões. Nunca use pip install pacote solto em produção.
# instalar e registrar
pip install requests beautifulsoup4
pip freeze > requirements.txt
# em outra máquina ou CI
pip install -r requirements.txt
4. pathlib — o jeito moderno de lidar com arquivos
Esqueça os.path.join. Use pathlib.Path.
from pathlib import Path
pasta = Path("dados")
pasta.mkdir(exist_ok=True)
arquivo = pasta / "relatorio.txt"
arquivo.write_text("conteúdo inicial\n", encoding="utf-8")
print(arquivo.exists())
print(arquivo.read_text(encoding="utf-8"))
print(list(pasta.glob("*.txt")))
5. Script completo: organizar fotos e documentos
Este script renomeia e organiza arquivos por extensão e data. Útil em pastas bagunçadas de downloads ou backups.
#!/usr/bin/env python3
"""Organiza arquivos de uma pasta por extensão e data de modificação."""
from pathlib import Path
from datetime import datetime
import shutil
ORIGEM = Path("entrada")
DESTINO = Path("organizado")
def organizar():
ORIGEM.mkdir(exist_ok=True)
DESTINO.mkdir(exist_ok=True)
contador = {}
for arq in ORIGEM.rglob("*"):
if not arq.is_file():
continue
ext = arq.suffix.lower() or ".sem_ext"
pasta_ext = DESTINO / ext[1:] # remove o ponto
pasta_ext.mkdir(exist_ok=True)
# nome com data
mtime = datetime.fromtimestamp(arq.stat().st_mtime)
novo_nome = f"{mtime:%Y%m%d_%H%M%S}_{arq.name}"
destino = pasta_ext / novo_nome
# evita sobrescrever
i = 1
while destino.exists():
destino = pasta_ext / f"{mtime:%Y%m%d_%H%M%S}_{i}_{arq.name}"
i += 1
shutil.copy2(arq, destino) # copy2 preserva metadados
contador[ext] = contador.get(ext, 0) + 1
print(f"{arq.name} → {destino}")
print("\nResumo:")
for ext, qtd in sorted(contador.items()):
print(f" {ext}: {qtd} arquivo(s)")
if __name__ == "__main__":
organizar()
entrada com 20–30 arquivos misturados (jpg, pdf, txt, csv).2. Rode o script.
3. Altere para mover em vez de copiar (use
shutil.move).4. Adicione um log em arquivo
organizacao.log com timestamp de cada operação.
6. Erros comuns e como evitar
- PermissionError — rode com usuário que tenha permissão na pasta ou use caminhos absolutos.
- FileNotFoundError — sempre use
exist_ok=Truee verifique com.exists(). - Encoding — em arquivos de texto use sempre
encoding="utf-8". - Caminhos com espaços — pathlib trata corretamente; evite strings manuais.