## 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}...')
```