## Espaço de Tecnologias e Artes - Sesc Avenida Paulista ### `hackmd.io/@sesc-av-paulista/estudos-em-python-7-maio` # Grupo de estudos em Python - **O que eu preciso para começar?** - Vamos usar o **Thonny IDE**, que é livre já com um interpretador Python, você pode baixar em https://thonny.org - Como instalar bibliotecas no Thonny? - **Usando a interface gráfica** menu *Tools/Ferramentas > Manage Packages/Gerenciar Pacotes* - **Usando o shell aberto pelo Thonny** em *Tools > Open System Shell* - Como se faz em geral no Python: `pip install <nome da lib>`, mas idealmente você deve usar um "virtual environment" antes, só que no caso do Thonny provê já esse env #### Outras referências - Documentação oficial do Python: https://docs.python.org/pt-br/3/ - Livro Pense Python: https://penseallen.github.io/PensePython2e/ (introdutório) - Tour redemoinho do Python: https://jakevdp.github.io/WhirlwindTourOfPython/ - Livro Python Fluente: https://pythonfluente.com/ (avançado) - Para coisas com desenho (programação criativa) com Python: https://abav.lugaralgum.com/como-instalar-py5/ ### 7/5 Lendo e escrevendo arquivos - usando o `with open(...):` do Python - Lendo e escrevendo arquivos de Word e de Excel! ### Usando `open()` com um gerenciador de contexto - Razões e exemplos - 1° exemplo: `` ```python= nome = 'Oswaldo' outro = "Lina" varias_linhas = """Eu sou um texto com várias linhas """ linhas = "Oswald's single line\noutra linha" print(varias_linhas) with open('exemplo.txt', 'w') as saida: saida.write(varias_linhas) print('acabou') ``` - 2° exemplo: ```python= with open('exemplo.txt', 'r') as entrada: leitor = entrada.readlines() for linha in leitor: print(linha, end='') #print(linha.rstrip()) ``` ### Manipulando arquivos de Word e Excel - Bibliotecas para instalar **`python-docx`** para manipular Word **`openpyxl`** para manipular Excel - Livro "Automate the Boring Stuff" - Word no final do capítulo https://automatetheboringstuff.com/2e/chapter15/ - Capítulo do Excel: http://automatetheboringstuff.com/2e/chapter13/ ### Exemplo Word ```python! from docx import Document d = Document('documento.docx') busca = '<nome_aluno>' subst = 'Osvaldo' for p in d.paragraphs: for r in p.runs: if busca in r.text: r.text = r.text.replace(busca, subst) d.save('novo_doc.docx') ``` Agora com uma tabela de dados ```python! from docx import Document d = Document('documento.docx') def substitui(d, busca, subst): for p in d.paragraphs: for r in p.runs: if busca in r.text: r.text = r.text.replace(busca, subst) dict_subst = { # dicionário (dict) '<nome_aluno>': 'Antônio', 'CERTIFICADO': 'CERTIFICADO DE CONCLUSÂO', 'São Paulo': 'Piratininga', } # for chave in dict_subst: # valor = dict_subst[chave] for chave, valor in dict_subst.items(): substitui(d, chave, valor) d.save('novo_doc.docx') ``` ### Explorando Excel ```python! from docx import Document import openpyxl d = Document('documento.docx') # template wb = openpyxl.load_workbook('dados.xlsx') # planilha de dados fs = wb.worksheets[0] # first sheet (primeira folha) def substitui(d, busca, subst): for p in d.paragraphs: for r in p.runs: if busca in r.text: r.text = r.text.replace(busca, subst) filas = list(fs.rows)[1:] # filas a partir da segunda dados = {} # dicionário vazio for fila in filas: a, b = fila[:2] # duas primeiras células da fila if a.value: # if a.value is not None: dados[chave] = valor for chave, valor in dados.items(): substitui(d, '{' + f'{chave}' + '}', valor) output = f"{dados['ASSUNTO']}-{dados['EQUIPAMENTO']}.docx" d.save(output) print(f'Salvo em {output}...') ```