Novatec Editora Ltda. 2015.



Documentos relacionados
Crie Seu Próprio Site

David Hows Peter Membrey Eelco Plugge

Desenvolvendo Websites com PHP

Excel Avançado. 2ª Edição. Antonio Fernando Cinto Wilson Moraes Góes. Novatec

Harrison Kinsley Will McGugan

Copyright 2008, 2013 da Novatec Editora Ltda.

Brandon Rhodes John Goerzen

Ademir C. Gabardo. Novatec

Ricardo R. Lecheta. Novatec

Keith Wood. Apresentação de Dave Methvin. Novatec

Sumário. Conteúdo Certificação OFFICE 2010

Defenda sua base com circuitos simples, Arduino e Raspberry Pi

Novatec Editora Ltda

Adail Henrique Spínola Horst Aécio dos Santos Pires André Luis Boni Déo. Novatec

PROVA DE NOÇÕES DE INFORMÁTICA Cargo 15. Uma pessoa, utilizando o sistema operacional Microsoft Windows, executou a seguinte seqüência de comandos:

Jonathan Stark Brian Jepson

Desenvolvendo para. Windows 8. Aprenda a desenvolver aplicativos para Windows Phone 8 e Windows 8. Ricardo R. Lecheta. Novatec

Aprendendo. Unix no OS X. Mountain Lion. Mergulhando no Terminal e no Shell. Dave Taylor. Novatec

Plano de Aula - Windows 8 - cód Horas/Aula

Curso de Informática Básica II (Windows / Internet / Word / Excel / Power Point)

Manual Vivo Sync. Manual do Usuário. Versão Copyright Vivo

Webmail UFMA Tutorial de Operações Básicas do Usuário Cliente Web

Plano de Aula - Excel cód Horas/Aula

MS-Excel 2010 Essencial (I)

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

Google Analytics Justin Cutroni

Manual TIM PROTECT BACKUP. Manual do Usuário. Versão Copyright TIM PROTECT BACKUP

Sumário. Sobre este livro 1. Direto ao assunto 7

Algoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira

Hélio Engholm Jr. Novatec

Plano de Aula - Dreamweaver CS6 - cód Horas/Aula

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Manual Vivo Sync. Manual do Usuário. Versão Copyright Vivo

PDF Explicado John Whitington

Departamento de Tecnologia da Informação DTI Coordenadoria de Relacionamento com o Cliente CRC. Treinamento Básico do Correio Eletrônico

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

Manual de Operações Básicas. Thiago Passamani

Plano de Aula - Outlook cód Horas/Aula

Manual do Usuário Nextel Cloud. Manual do Usuário. Versão Copyright Nextel

WF Processos. Manual de Instruções

Luiz Carlos Querino Filho

UFPel Departamento de Informática. Tutorial Google Docs. Profa. Lisane Brisolara de Brisolara

TUTORIAL UTILIZAÇÃO DE FUNCIONALIDADES AUDITOR FISCAL

Plano de Aula - Excel cód Horas/Aula

Informática. Informática. Valdir

Informática Básica para o PIBID

Sumário. Capítulo 1 Revisão de PHP Capítulo 2 Melhorando o processamento de formulários... 46

CICLO DE APERFEIÇOAMENTO PROFISSIONAL DOS SERVIDORES MUNICIPAIS DE MARICÁ- RJ EDITOR DE TEXTO - WORD

PROCEDIMENTO OPERACIONAL PADRÃO. Serviço Administração do CA

Vendas. Manual do Usuário. Copyright ControleNaNet

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Informática Aplicada. Aula 2 Windows Vista. Professora: Cintia Caetano

Plano de Curso. Conhecimentos Básicos do sistema operacional Windows, conceitos de internet.

JQuery. A Biblioteca do Programador JavaScript. 3ª Edição Revisada e ampliada. Maurício Samy Silva. Novatec

V 1.0 LINAEDUCA - GUIA DE USO

Usar o Office 365 em seu telefone Android

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

EMENTA DO CURSO DE BROFFICE

UNIVERSIDADE FEDERAL DA PARAÍBA PRÓ REITORIA DE EXTENSÃO E ASSUNTOS COMUNITÁRIOS

Manual de Utilização COPAMAIL Criando e configurando a assinatura de . Zimbra Versão 8.0.2

Plano de Aula - Word 2010 Avançado - cód Horas/Aula

Manual de Utilização COPAMAIL. Zimbra Versão 8.0.2

Usar FTK Imager para gerar evidências, exportar arquivos de evidências, criar imagens forenses e converter imagens existentes.

Power Point. Autor: Paula Pedone

Criando Aplicações PHP com. Zend e Dojo. Flávio Gomes da Silva Lisboa. Novatec

Manual do Usuário Nextel Cloud. Manual do Usuário. Versão Copyright Nextel

LIÇÃO 1 - USANDO O GRAVADOR DE MACROS

Easytrade Admin Client

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

Manual Backup Online. Manual do Usuário. Versão Copyright Backup Online

Professor: Macêdo Firmino Informática para Administração Introdução ao Excel

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Guia de Início Rápido

Tutorial Administrativo (Backoffice)

Workshop (mínimo de 5 inscrições)

Outlook Apresentação

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Todos os direitos reservados.

Versão Apresentação. Parte I. Vivaldo Armelin Júnior

PROVA DE NOÇÕES DE MICROINFORMÁTICA

UNIVERSIDADE TECNOLOGIA FEDERAL DO PARANÁ. Owncloud SERVIÇO DE COMPARTILHAMENTO EM NUVEM. Manual

Introdução à Linguagem

Manual de utilização do Portal Entrelace.org.br. William Oyama

MANUAL BÁSICO DE UTILIZAÇÃO DO SARA - PC SCANNER COM VOZ

ÍNDICE... 2 INTRODUÇÃO... 4

GUIA DE USUÁRIO - GU-

Livro Caixa. Copyright ControleNaNet

Conteúdo Programático do Web Design

LIÇÃO 1 - GRAVANDO MACROS

Guia de Início Rápido

Criando Aplicações Gráficas com PHP

Lojas Virtuais com. Magento. André Nobrega Gugliotti. Novatec

Justin Seitz. Novatec

Sumário. Capítulo 1 O que é o PHP? Capítulo 2 Instalação do PHP Capítulo 3 Noções básicas de programação... 25

Lidar com números e estatísticas não é fácil. Reunir esses números numa apresentação pode ser ainda mais complicado.

Menu Utilitários. Atualização do Banco de Dados Atualização e organização dos arquivos existentes

Tutorial WEB CONTENT MANAGEMENT [WCM] Obtenha benefícios a partir das aplicações customizadas da ADMT.

MANUAL DE UTILIZAÇÃO DO WEBMAIL SBC

Bem-vindo! O que há de novo no PaperPort 10?

Transcrição:

Al Sweigart Novatec

Copyright 2015 by Al Sweigart. Title of English-language original: Automate the Boring Stuff with Python, ISBN 978-1-59327-599-0, published by No Starch Press. Portuguese-language edition copyright 2015 by Novatec Editora Ltda. All rights reserved. Copyright 2015 by Al Sweigart. Título original em inglês: Automate the Boring Stuff with Python, ISBN 978-1-59327-599-0, publicado pela No Starch Press. Edição em Português copyright 2015 pela Novatec Editora Ltda. Todos os direitos reservados. Novatec Editora Ltda. 2015. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Assistente editorial: Priscila Yoshimatsu Tradução: Lúcia A. Kinoshita Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-446-5 IG20150804 Histórico de impressões: Agosto/2015 Primeira edição Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 E-mail: novatec@novatec.com.br Site: novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec

SUMÁRIO Agradecimentos... 23 Introdução... 24 Parte I Básico da programação Python... 37 Capítulo 1 Básico sobre o Python... 38 Fornecendo expressões no shell interativo... 39 Tipos de dado inteiro, de ponto flutuante e string...42 Concatenação e repetição de strings... 43 Armazenando valores em variáveis...44 Instruções de atribuição... 45 Nomes de variáveis...46 Seu primeiro programa... 47 Dissecando seu programa... 49 Comentários... 49 Função print()...50 Função input()...50 Exibindo o nome do usuário...51 Função len()...51 Funções str(), int() e float()... 52 Resumo...56 Exercícios práticos...56 Capítulo 2 Controle de fluxo... 58 Valores booleanos... 59 Operadores de comparação...60 Operadores booleanos... 62 7

8 Automatize tarefas maçantes com Python Operadores booleanos binários... 62 Operador not...63 Misturando operadores booleanos e de comparação...64 Elementos do controle de fluxo... 65 Condições... 65 Blocos de código... 65 Execução do programa...66 Instrução de controle de fluxo... 67 Instruções if... 67 Instruções else...68 Instruções elif... 69 Instruções de loop while... 74 Instruções break... 78 Instruções continue...80 Loops for e a função range()...83 Importando módulos...87 Instruções from import...88 Encerrando um programa previamente com sys.exit()...88 Resumo...89 Exercícios práticos...89 Capítulo 3 Funções... 91 Instruções def com parâmetros... 93 Valores de retorno e instruções return...94 Valor None...95 Argumentos nomeados e print()...96 Escopo local e global...98 Variáveis locais não podem ser usadas no escopo global...99 Escopos locais não podem usar variáveis de outros escopos locais...99 Variáveis globais podem ser lidas a partir de um escopo local... 100 Variáveis locais e globais com o mesmo nome... 101 Instrução global... 102 Tratamento de exceções... 104 Um pequeno programa: adivinhe o número... 106 Resumo... 109 Exercícios práticos... 109 Projetos práticos...110 Sequência de Collatz...110 Validação de dados de entrada...111

Sumário 9 Capítulo 4 Listas... 112 Tipo de dado lista... 113 Obtendo valores individuais de uma lista por meio de índices... 113 Índices negativos...115 Obtendo sublistas com slices...116 Obtendo o tamanho de uma lista com len()... 117 Alterando valores de uma lista usando índices... 117 Concatenação e repetição de listas... 117 Removendo valores de listas usando instruções del... 118 Trabalhando com listas... 118 Utilizando loops for com listas... 120 Operadores in e not in...122 Truque da atribuição múltipla...123 Operadores de atribuição expandidos...123 Métodos...124 Encontrando um valor em uma lista com o método index()...125 Adicionando valores a listas com os métodos append() e insert()...125 Removendo valores de listas com remove()... 126 Ordenando os valores de uma lista com o método sort()...127 Exemplo de programa: Magic 8 Ball com uma lista... 129 Tipos semelhantes a listas: strings e tuplas... 130 Tipos de dados mutáveis e imutáveis... 131 Tipo de dado tupla... 134 Convertendo tipos com as funções list() e tuple()...135 Referências...135 Passando referências... 138 Funções copy() e deepcopy() do módulo copy...139 Resumo...140 Exercícios práticos...140 Projetos práticos... 141 Código para vírgulas... 141 Grade para imagem composta de caracteres... 141 Capítulo 5 Dicionários e estruturação de dados... 143 Tipo de dado dicionário...143 Comparação entre dicionários e listas... 144 Métodos keys(), values() e items()... 146 Verificando se uma chave ou um valor estão presentes em um dicionário...148

10 Automatize tarefas maçantes com Python Método get()...148 Método setdefault()...149 Apresentação elegante... 150 Utilizando estruturas de dados para modelar objetos do mundo real...152 Um tabuleiro de jogo da velha...153 Dicionários e listas aninhados...159 Resumo... 160 Exercícios práticos...161 Projetos práticos... 162 Inventário de um jogo de fantasia... 162 Função de lista para dicionário para o inventário de jogo de fantasia... 163 Capítulo 6 Manipulação de strings... 164 Trabalhando com strings... 164 Strings literais... 165 Indexação e slicing de strings... 168 Operadores in e not in com strings... 169 Métodos úteis de string... 169 Métodos de string upper(), lower(), isupper() e islower()...170 Métodos de string isx...172 Métodos de string startswith() e endswith()...174 Métodos de string join() e split()...174 Justificando texto com rjust(), ljust() e center()...176 Removendo espaços em branco com strip(), rstrip() e lstrip()...178 Copiando e colando strings com o módulo pyperclip...179 Projeto: Repositório de senhas... 180 Passo 1: Design do programa e estruturas de dados... 180 Passo 2: Tratar argumentos da linha de comando... 181 Passo 3: Copiar a senha correta... 181 Projeto: Adicionando marcadores na marcação da Wiki... 183 Passo 1: Copiar e colar no clipboard... 184 Passo 2: Separar as linhas de texto e acrescentar o asterisco... 184 Passo 3: Juntar as linhas modificadas...185 Resumo... 186 Exercícios práticos... 187 Projeto prático... 188 Exibição de tabela... 188

Sumário Parte II Automatizando tarefas...189 Capítulo 7 Correspondência de padrões com expressões regulares... 190 Encontrando padrões de texto sem usar expressões regulares... 191 Encontrando padrões de texto com expressões regulares...193 Criando objetos Regex... 194 Objetos Regex de correspondência... 195 Revisão da correspondência com expressão regular... 196 Mais correspondência de padrões com expressões regulares... 196 Agrupando com parênteses... 196 Fazendo a correspondência de vários grupos com pipe... 198 Correspondência opcional usando ponto de interrogação... 199 Correspondendo a zero ou mais ocorrências usando asterisco... 200 Correspondendo a uma ou mais ocorrências usando o sinal de adição... 200 Correspondendo a repetições específicas usando chaves...201 Correspondências greedy e nongreedy... 202 Método findall()... 203 Classes de caracteres... 204 Criando suas próprias classes de caracteres... 205 Acento circunflexo e o sinal de dólar... 206 Caractere-curinga... 207 Correspondendo a tudo usando ponto-asterisco... 207 Correspondendo a quebras de linha com o caractere ponto... 208 Revisão dos símbolos de regex... 209 Correspondências sem diferenciar letras maiúsculas de minúsculas...210 Substituindo strings com o método sub()... 211 Administrando regexes complexas... 211 Combinando re.ignorecase, re.dotall e re.verbose...212 Projeto: extrator de números de telefone e de endereços de email...213 Passo 1: Criar uma regex para números de telefone...214 Passo 2: Criar uma regex para endereços de email...215 Passo 3: Encontrar todas as correspondências no texto do clipboard...216 Passo 4: Reunir as correspondências em uma string para o clipboard...217 Executando o programa...218 Ideias para programas semelhantes...218 Resumo...219 Exercícios práticos...219 11

12 Automatize tarefas maçantes com Python Projetos práticos...221 Detecção de senhas robustas...221 Versão de strip() usando regex... 222 Capítulo 8 Lendo e escrevendo em arquivos... 223 Arquivos e paths de arquivo... 223 Barra invertida no Windows e barra para frente no OS X e no Linux... 224 Diretório de trabalho atual... 225 Comparação entre paths absolutos e relativos... 226 Criando novas pastas com os.makedirs()... 227 Módulo os.path... 228 Lidando com paths absolutos e relativos... 228 Obtendo os tamanhos dos arquivos e o conteúdo das pastas... 230 Verificando a validade de um path... 231 Processo de leitura/escrita... 232 Abrindo arquivos com a função open()... 233 Lendo o conteúdo dos arquivos... 234 Escrevendo em arquivos... 235 Salvando variáveis com o módulo shelve... 236 Salvando variáveis com a função pprint.pformat()... 238 Projeto: gerando arquivos aleatórios de provas... 239 Passo 1: Armazenar os dados da prova em um dicionário... 240 Passo 2: Criar o arquivo com a prova e embaralhar a ordem das perguntas...241 Passo 3: Criar as opções de resposta... 243 Passo 4: Gravar conteúdo nos arquivos de prova e de respostas... 244 Projeto: Multiclipboard... 245 Passo 1: Comentários e configuração do shelf... 246 Passo 2: Salvar o conteúdo do clipboard com uma palavra-chave...247 Passo 3: Listar palavras-chaves e carregar o conteúdo de uma palavra-chave. 248 Resumo... 249 Exercícios práticos... 250 Projetos práticos... 250 Estendendo o multiclipboard... 250 Mad Libs... 250 Pesquisa com regex... 251 Capítulo 9 Organizando arquivos... 252 Módulo shutil... 253 Copiando arquivos e pastas... 253

Sumário 13 Movendo e renomeando arquivos e pastas... 254 Apagando arquivos e pastas permanentemente... 256 Apagando arquivos com segurança usando o módulo send2trash... 257 Percorrendo uma árvore de diretório... 258 Compactando arquivos com o módulo zipfile... 260 Lendo arquivos ZIP... 260 Extraindo itens de arquivos ZIP...261 Criando arquivos ZIP e adicionando itens... 262 Projeto: Renomeando arquivos com datas em estilo americano para datas em estilo europeu... 263 Passo 1: Criar uma regex para datas em estilo americano... 263 Passo 2: Identificar as partes da data nos nomes de arquivo... 265 Passo 3: Compor o novo nome de arquivo e renomear os arquivos...266 Ideias para programas semelhantes... 267 Projeto: Fazer backup de uma pasta usando um arquivo ZIP... 267 Passo 1: Determinar o nome do arquivo ZIP...268 Passo 2: Criar o novo arquivo ZIP... 269 Passo 3: Percorrer a árvore de diretório e fazer adições ao arquivo ZIP... 270 Ideias para programas semelhantes...271 Resumo...271 Exercícios práticos... 272 Projetos práticos... 273 Cópia seletiva... 273 Apagando arquivos desnecessários... 273 Preenchendo as lacunas... 273 Capítulo 10 Debugging... 274 Gerando exceções... 275 Obtendo o traceback como uma string... 277 Asserções... 279 Usando uma asserção em uma simulação de semáforo... 280 Desabilitando as asserções...281 Logging... 282 Utilizando o módulo logging... 282 Não faça debug com print()... 284 Níveis de logging... 285 Desabilitando o logging... 286 Logging em um arquivo... 286

14 Automatize tarefas maçantes com Python Debugger do IDLE... 287 Go 288 Step...288 Over...288 Out... 289 Quit... 289 Fazendo debugging de um programa que soma números... 289 Breakpoints... 292 Resumo... 293 Exercícios práticos... 294 Projeto prático... 295 Debugging em um programa de lançamento de moeda... 295 Capítulo 11 Web Scraping... 296 Projeto: mapit.py com o módulo webbrowser... 297 Passo 1: Identificar o URL... 297 Passo 2: Tratar argumentos da linha de comando... 298 Passo 3: Tratar o conteúdo do clipboard e iniciar o navegador... 299 Ideias para programas semelhantes... 300 Fazendo download de arquivos da Web com o módulo requests... 300 Fazendo download de uma página web com a função requests.get()...301 Verificando se houve erros... 302 Salvando arquivos baixados no disco rígido... 303 HTML... 305 Recursos para aprender HTML... 305 Uma revisão rápida... 305 Visualizando o código-fonte HTML de uma página web... 306 Abrindo as ferramentas de desenvolvedor em seu navegador... 307 Usando as ferramentas de desenvolvedor para encontrar elementos HTML... 309 Fazendo parse de HTML com o módulo BeautifulSoup...310 Criando um objeto BeautifulSoup a partir do HTML... 311 Encontrando um elemento com o método select()...312 Obtendo dados dos atributos de um elemento... 314 Projeto: Pesquisa Estou com sorte no Google... 314 Passo 1: Obter os argumentos da linha de comando e solicitar a página de pesquisa..315 Passo 2: Encontrar todos os resultados...316 Passo 3: Abrir abas do navegador web para cada resultado... 317 Ideias para programas semelhantes...318

Sumário 15 Projeto: Downloading de todas as tirinhas XKCD...318 Passo 1: Design do programa... 320 Passo 2: Download da página web... 321 Passo 3: Encontrar e fazer download da imagem da tirinha... 322 Passo 4: Salvar a imagem e encontrar a tirinha anterior... 323 Ideias para programas semelhantes...324 Controlando o navegador com o módulo Selenium... 325 Iniciando um navegador controlado pelo Selenium... 325 Localizando elementos na página... 326 Clicando na página... 328 Preenchendo e submetendo formulários... 329 Enviando teclas especiais... 329 Clicando nos botões do navegador... 330 Mais informações sobre o Selenium... 330 Resumo... 331 Exercícios práticos... 331 Projetos práticos...332 Envio de emails pela linha de comando...332 Programa para fazer downloads de um site de imagens...332 2048... 333 Verificação de links... 333 Capítulo 12 Trabalhando com planilhas Excel... 334 Documentos Excel... 335 Instalando o módulo openpyxl... 335 Lendo documentos Excel... 336 Abrindo documentos Excel com o OpenPyXL... 336 Obtendo as planilhas do workbook...337 Obtendo as células das planilhas... 338 Fazendo a conversão entre letras e números das colunas... 339 Obtendo linhas e colunas das planilhas... 340 Workbooks, planilhas e células... 342 Projeto: Ler dados de uma planilha... 343 Passo 1: Ler os dados da planilha... 344 Passo 2: Preencher a estrutura de dados... 345 Passo 3: Gravar os resultados em um arquivo... 347 Ideias para programas semelhantes... 348 Escrevendo em documentos Excel... 348 Criando e salvando documentos Excel... 349

16 Automatize tarefas maçantes com Python Criando e removendo planilhas... 350 Escrevendo valores em células... 351 Projeto: Atualizando uma planilha... 351 Passo 1: Definir uma estrutura de dados com as informações a serem atualizadas..352 Passo 2: Verificar todas as linhas e atualizar os preços incorretos... 353 Ideias para programas semelhantes... 354 Definindo o estilo de fonte das células...355 Objetos Font... 356 Fórmulas... 357 Ajustando linhas e colunas... 359 Definido a altura da linha e a largura da coluna... 359 Mesclar e separar células...360 Painéis congelados...361 Gráficos... 362 Resumo... 365 Exercícios práticos... 365 Projetos práticos...366 Gerador de tabelas de multiplicação...366 Programa para inserção de linhas em branco... 367 Programa para inverter células da planilha... 367 Arquivos-texto para planilha...368 Planilhas para arquivos-texto...368 Capítulo 13 Trabalhando com documentos PDF e Word... 369 Documentos PDF... 370 Extraindo texto de PDFs... 370 Descriptografando PDFs... 372 Criando PDFs...373 Projeto: Combinando páginas selecionadas de vários PDFs...378 Passo 1: Encontrar todos os arquivos PDF... 379 Passo 2: Abrir cada PDF... 380 Passo 3: Adicionar cada página...381 Passo 4: Salvar o resultado...381 Ideias para programas semelhantes... 382 Documentos Word... 382 Lendo documentos Word... 383 Obtendo o texto completo de um arquivo.docx... 385 Estilizando parágrafos e objetos Run...386

Sumário 17 Criando documentos Word com estilos que não sejam default... 387 Atributos de Run...388 Escrevendo em documentos Word... 390 Adicionando títulos... 392 Adicionando quebras de linha e de página... 393 Adicionando imagens... 393 Resumo... 394 Exercícios práticos... 394 Projetos práticos... 395 Paranoia com PDFs... 395 Convites personalizados como documentos Word... 396 Programa para quebra de senha de PDF baseado em força bruta... 397 Capítulo 14 Trabalhando com arquivos CSV e dados JSON... 398 Módulo CSV... 399 Objetos Reader...400 Lendo dados de objetos Reader em um loop for...401 Objetos Writer... 402 Argumentos nomeados delimiter e lineterminator... 403 Projeto: Removendo o cabeçalho de arquivos CSV... 404 Passo 1: Percorrer todos os arquivos CSV em um loop... 405 Passo 2: Ler o arquivo CSV...406 Passo 3: Gravar o arquivo CSV sem a primeira linha... 407 Ideias para programas semelhantes... 408 JSON e APIs... 408 Módulo json...410 Lendo JSON com a função loads()...410 Escrevendo JSON com a função dumps()...410 Projeto: Acessando dados atuais de previsão do tempo... 411 Passo 1: Obter a localidade a partir dos argumentos da linha de comando... 411 Passo 2: Fazer download dos dados JSON...412 Passo 3: Carregar dados JSON e exibir informações sobre a previsão do tempo...413 Ideias para programas semelhantes...415 Resumo...415 Exercícios práticos...416 Projeto prático...416 Conversor de Excel para CSV...416

18 Automatize tarefas maçantes com Python Capítulo 15 Monitorando tempo, agendando tarefas e iniciando programas... 418 Módulo time...419 Função time.time()...419 Função time.sleep()... 420 Arredondando números...421 Projeto: Supercronômetro... 422 Passo 1: Preparar o programa para monitorar tempos... 423 Passo 2: Monitorar e exibir os tempos de duração das rodadas... 424 Ideias para programas semelhantes... 425 Módulo datetime... 425 Tipo de dado timedelta... 427 Fazendo uma pausa até uma data específica... 429 Convertendo objetos datetime em strings... 429 Convertendo strings em objetos datetime...431 Revisão das funções de tempo do Python...431 Multithreading... 432 Passando argumentos à função-alvo da thread... 435 Problemas de concorrência... 436 Projeto: Programa multithreaded para download de XKCD... 436 Passo 1: Modificar o programa para que use uma função... 436 Passo 2: Criar e iniciar as threads... 438 Passo 3: Esperar todas as threads terminarem... 439 Iniciando outros programas a partir do Python... 439 Passando argumentos da linha de comando a Popen()...441 Task Scheduler, launchd e cron... 442 Abrindo sites com o Python... 442 Executando outros scripts Python... 443 Abrindo arquivos com aplicativos default... 443 Projeto: Programa simples de contagem regressiva... 445 Passo 1: Fazer a contagem regressiva... 445 Passo 2: Reproduzir o arquivo de áudio...446 Ideias para programas semelhantes... 447 Resumo... 447 Exercícios práticos...448 Projetos práticos... 449 Cronômetro elegante... 449 Programa agendado para fazer download de web comics... 449

Sumário 19 Capítulo 16 Enviando email e mensagens de texto... 450 SMTP... 451 Enviando emails... 451 Conectando-se a um servidor SMTP...452 Enviando a mensagem Hello do SMTP... 453 Iniciando a criptografia TLS... 454 Fazendo login no servidor SMTP... 454 Enviando um email... 455 Desconectando-se do servidor SMTP... 456 IMAP... 456 Obtendo e apagando emails com o IMAP... 456 Conectando-se a um servidor IMAP... 457 Fazendo login no servidor IMAP... 458 Procurando emails... 459 Buscando um email e marcando-o como lido...464 Obtendo endereços de email de uma mensagem pura... 465 Obtendo o corpo de uma mensagem pura...466 Apagando emails... 467 Desconectando-se do servidor IMAP... 467 Projeto: Enviando emails com aviso de vencimento de pagamento...468 Passo 1: Abrir o arquivo Excel... 469 Passo 2: Localizar todos os sócios que não fizeram o pagamento... 470 Passo 3: Enviar emails personalizados para servir de lembrete... 471 Enviando mensagens de texto com o Twilio... 473 Criando uma conta no Twilio...474 Enviando mensagens de texto...474 Projeto: Módulo Envie uma mensagem a mim mesmo... 477 Resumo... 478 Exercícios práticos... 479 Projetos práticos... 479 Programa para enviar emails com atribuições de tarefas aleatórias... 479 Lembrete para pegar o guarda-chuva... 480 Cancelamento automático de inscrição... 480 Controlando seu computador por email... 480 Capítulo 17 Manipulando imagens... 482 Básico sobre imagens no computador... 483 Cores e valores RGBA... 483 Coordenadas e tuplas de caixa... 485

20 Automatize tarefas maçantes com Python Manipulando imagens com o Pillow...486 Trabalhando com o tipo de dado Image...488 Recortando imagens... 489 Copiando e colando imagens sobre outras imagens... 490 Redimensionando uma imagem... 493 Fazendo rotações e invertendo as imagens... 494 Alterando pixels individuais... 496 Projeto: Adicionando um logo... 498 Passo 1: Abrir a imagem com o logo... 499 Passo 2: Percorrer todos os arquivos e abrir as imagens em um loop... 500 Passo 3: Redimensionar as imagens...501 Passo 4: Adicionar o logo e salvar as alterações... 502 Ideias para programas semelhantes... 503 Desenhando em imagens... 504 Desenhando formas... 505 Desenhando textos... 507 Resumo... 509 Exercícios práticos...510 Projetos práticos...510 Estendendo e corrigindo os programas do projeto do capítulo...510 Identificando pastas com fotos no disco rígido... 511 Cartões personalizados para indicar o assento...512 Capítulo 18 Controlando o teclado e o mouse com automação de GUI... 513 Instalando o módulo pyautogui... 514 Permanecendo no caminho certo... 514 Encerrando tudo ao fazer logout...515 Pausas e falhas com segurança...515 Controlando os movimentos do mouse...516 Movendo o mouse... 517 Obtendo a posição do mouse...518 Projeto: Onde está o mouse neste momento?...518 Passo 1: Importar o módulo...519 Passo 2: Criar o código para saída e o loop infinito...519 Passo 3: Obter e exibir as coordenadas do mouse... 520 Controlando a interação com o mouse... 521 Clicando o mouse... 521 Arrastando o mouse... 522 Fazendo rolagens com o mouse...524

Sumário 21 Trabalhando com a tela...525 Obtendo uma captura de tela... 526 Analisando a tela capturada... 526 Projeto: Estendendo o programa mousenow... 527 Reconhecimento de imagens... 528 Controlando o teclado... 529 Enviando uma string a partir do teclado... 529 Nomes das teclas... 531 Pressionando e soltando as teclas...532 Combinações para atalhos de teclado...532 Revisão das funções de PyAutoGUI... 533 Projeto: Preenchimento automático de formulários... 534 Passo 1: Identificar os passos... 536 Passo 2: Definir as coordenadas...537 Step 3: Começar a digitar os dados... 539 Passo 4: Tratar listas de seleção e botões de rádio... 540 Passo 5: Submeter o formulário e esperar... 542 Resumo... 543 Exercícios práticos... 543 Projetos práticos... 544 Parecendo ocupado... 544 Bot para aplicativo de mensagens instantâneas... 544 Tutorial para bot usado em jogo... 545 Apêndice A Instalando módulos de terceiros... 546 Ferramenta pip... 546 Instalando módulos de terceiros... 547 Apêndice B Executando programas... 549 Linha shebang... 549 Executando programas Python no Windows... 550 Executando programas Python no OS X e no Linux... 551 Executando programas Python com as asserções desabilitadas...552 Apêndice C Respostas aos exercícios práticos... 553 Capítulo 1... 553 Capítulo 2... 554 Capítulo 3... 556

22 Automatize tarefas maçantes com Python Capítulo 4... 557 Capítulo 5... 558 Capítulo 6... 558 Capítulo 7... 559 Capítulo 8...561 Capítulo 9...561 Capítulo 10... 562 Capítulo 11... 563 Capítulo 12... 564 Capítulo 13... 565 Capítulo 14... 565 Capítulo 15...566 Capítulo 16...566 Capítulo 17... 567 Capítulo 18... 567