Tratar erros em Python para facilitar a vida

Você já se deparou com um erro no código e ficou batendo cabeça para saber qual era o erro?
A IDE ou o próprio prompt (>>>) do Python informava uma coisa e depois você descobriu que era outro erro.

Pois é!

Por causa disso, achamos interessante trazer uma estrutura básica para quem está começando a programar em Python.

A estrutura é bem simples e consiste em ter um “try:” antes do seu código fonte e o tratamento após o seu código fonte.

As bibliotecas que serão carregadas devem ficar antes do “try:”.

O desvio para identificação do erro será para erros de sistemas operacionais, erros de valor porque o Python trabalha orientado a objetos e quase tudo é um objeto no python e, por fim, exceções que acontecerem com comportamentos não esperados na execução do programa.

Esse tratamento pode ser melhorado, mas com esse mínimo será possível facilitar muito a vida de quem está programando.

Um ponto de atenção é na indentação, porque como o “try:” fica na primeira coluna, então o seu código fonte deve começar indentado. Eu acho que esse é o único ponto um “pouco chato” de utilizar o tratamento de erro, porque você vai iniciar seu código com a indentação no primeiro nível de indentação, por outro lado, compensa o benefício da rápida identificação do erro.

Vamos ao código!


# Carregue as biblotecas aqui, como pandas, matplotlib, numpy, etc


# Arquivo de exemplo de tratamento de erros
try:

    # <aqui vai o código fonte do seu programa>

except OSError as err:
    #<aqui o tratamento captura o erro de Sistema Operacional>
    print("Erro de S.O. : {0}".format(err))
except ValueError:
    # <aqui  o tratamento captura o erro do programa como valores errados ou parâmetros>
    print("Não pode converter data para inteiro.")
except BaseException as err:
    #<aqui  o tratamento captura as exceções que acontecem no programa>
    print(f"Inesperado {err=}, {type(err)=}")
    raise

Teste esse tratamento de erro!
Copie esse código fonte de tratamento de erro e cole o seu código após o “try:”.

Depois, force erros como mudar caminho de arquivos, “\”, parâmetros, cálculos errados e etc.

A mágica acontecerá e sua vida ficará mais fácil a partir do momento que você iniciar o tratamento de erros.

Com o tempo, esse processo é incorporado ao seu dia a dia.

Boa diversão!

Até a próxima!

Altair Ribeiro

Tocar mp3 com a biblioteca pygame

A biblioteca pygame é muito versátil na sua utilização, mas uma implementação simples é utilizá-la para tocar arquivos no formato mp3.

A implementação é muito simples e com poucas linhas, você pode utilizá-la para curtir um som ou inserir um arquivo de audio no seu sistema ou game.

Vamos ao código!


Uma forma de implementar o código.

# importar a biblioteca pygame
from pygame import mixer

# uma forma de implementar o código
mixer.init()

# substitua o nome do arquivo "musica.mp3" pelo seu arquivo mp3
mixer.music.load('musica.mp3')
mixer.music.play()
x = input('Digite algo para parar...')

Outra forma de implementar o código.

# importar a biblioteca pygame
import pygame

# outra forma de implementar o código

pygame.mixer.init()
# substitua o nome do arquivo "musica.mp3" pelo seu arquivo mp3
pygame.mixer.music.load('musica.mp3')
pygame.mixer.music.play()
x = input('Digite algo para parar a musica...')

As duas formas funcionam, porém fica a critério de cada um como implementar.

obs: código postado no grupo de Telegram da comunidade Py013.

Até a próxima!

Buscar CEPs com Python e Selenium

Um dos trabalhos apresentados no Encontro da Comunidade no dia 27/05/23 por Altair Ribeiro

Muitas vezes precisamos obter endereços completos para a realização de testes de software, ou ainda para incluir dados em um formulário na Web.
O Selenium é uma biblioteca muito utilizada para testes de software e que pode ser utilizada a realização desse tipo de trabalho repetitivo.

Você precisa ter o geckodriver.exe (baixe aqui) ou o chromedriver.exe (baixe aqui) para que o código fonte em Python em conjunto com a biblioteca Selenium crie uma instância do Browser e controle todo o processo de execução.

Tanto o Geckodriver.exe quanto o Chromedriver.exe precisam estar na mesma pasta do código fonte.

Utilizamos um site muito utilizado por Analistas de Qualidade para a geração de massa de dados.

É um site muito conhecido nesse meio e também muito bem montado e que contribui muito para elevarmos o nível da disciplina de qualidade no Brazil.

É o site www.4devs.com.br!

Vamos ao código fonte.

# importar as bibliotecas necessárias
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import random
import re

# Definir a quantidade de endereços que serão gravados no arquivo "ceps.txt"
qtde= 5

# Inclusão de um Try para obter o código de erro em caso de falha do código fonte e o código que será executado
try:
    path_atual = os.getcwd()
    print('path:' , path_atual)

    # driver = webdriver.Chrome()
    driver = webdriver.Firefox()
    driver.maximize_window()

    # URL que será acessada
    url = 'https://www.4devs.com.br/gerador_de_cep'

    driver.get(url)
    time.sleep(2)

    cont = 0

    estado = driver.find_element(By.ID, 'cep_estado')
    estado.send_keys('SP')
    time.sleep(5)

    estado = driver.find_element(By.ID, 'cep_cidade')
    estado.send_keys('Santos')
    time.sleep(5)

    with open("ceps.txt",'a', newline="") as arquivo:
        while cont <qtde:

            submit = driver.find_element(By.ID,'btn_gerar_cep')
            #time.sleep(3)
            submit.click()
            time.sleep(5)
            cep = driver.find_element(By.ID, 'cep')
            cep.click()
            endereco = driver.find_element(By.ID, 'endereco')
            endereco.click()
            bairro = driver.find_element(By.ID, 'bairro')
            bairro.click()
            cidade = driver.find_element(By.ID, 'cidade')
            cidade.click()
            estado = driver.find_element(By.ID, 'estado')
            estado.click()
            time.sleep(5)
            arquivo.write(re.sub("\-","",cep.text) + ';' + endereco.text + ';' + str(random.randint(1,1000)) + ';' + 'ap. ' + str(random.randint(1,100)) + ';' + bairro.text + ';' + cidade.text + ';' +estado.text + '\n')
            cont += 1
            #print(cont , ". ", cep.text + ';' + endereco.text + ';' + str(random.randint(1,1000)) + ';' +  'ap. ' + str(random.randint(1,100)) + ';' + bairro.text + ';' + cidade.text + ';' +estado.text)
            print(cont , ". ", re.sub("\-","",cep.text) + ';' + endereco.text + ';' + str(random.randint(1,1000)) + ';' +  'ap. ' + str(random.randint(1,100)) + ';' + bairro.text + ';' + cidade.text + ';' +estado.text)

    arquivo.close()
    driver.close()

# Tratamentos dos erros para uma melhor identificação em caso de falha
except OSError as err:
    #<aqui vai o erro de Sistema Operacional>
    print("Erro de S.O. : {0}".format(err))
except ValueError:
    # <aqui vai o erro do programa>
    print("Não pode converter data para inteiro.")
except BaseException as err:
    #<aqui vão exceções que aconteçam no programa>
    print(f"Inesperado {err=}, {type(err)=}")
    raise

Se tiver dúvidas no uso do código, entre na comunidade no Telegram (https://t.me/+aLIZYCmBJfH-qPGs).

Até a próxima!

Encontro da comunidade Py013 – Parque Tecnológico de Santos

No dia 27/05/2023, a comunidade realizou mais um encontro com apresentação de trabalhos pelos membros da comunidade.

O evento contou com a apresentação de trabalhos de Altair Ribeiro, Lucas Ribeiro e José Fontebasso Neto, além da interação entre os membros da comunidade.

Como sempre tivemos muita troca de experiência e muitas discussões elucidativas sobre o uso de bibliotecas, comandos e funções.

Algumas das fotos do encontro.

Baixar a playlist inteira do Youtube

Algumas vezes queremos estudar offline e para isso precisamos baixar os videos localmente no computador.

Existem ferramentas que fazem isso, mas geralmente são pagas.

Com poucas linhas de código fonte, você pode fazer isso com Python.

Porém, respeitem os direitos autorais dos autores dos vídeos, músicas ou qualquer forma de conteúdo produzido.

Vamos lá!

# carregar os métodos Youtube e Playlist da biblioteca pytube
from pytube import YouTube, Playlist

# atribui à variável playlist_fim a URL da playlist obtida no Youtube
playlist_fim = 'https://www.youtube.com/watch?v=IftUFXo2e-k&list=PLnNURxKyyLIKvXocwRwLCQqPU0mcTSLxJ'

# atribuir à variável playlist a lista de vídeos da playlist com o método Playlist
playlist = Playlist(playlist_fim)

# para cada item da lista de vídeos da playlist, baixar cada
# vídeo sequencialmente (laço for utilizado)
for url in playlist:
    # atribuir à variável video o método Youtube com o parãmetro url que irá
    # ler o vídeo sequencialmente, iniciando do primeiro da playlist
    video = YouTube(url)
    # atribuir à variável stream a utilização do vídeo de mais alta resolução
    stream = video.streams.get_highest_resolution()
    # efetuar o download do vídeo e gravar na pasta "playlist"
    stream.download(output_path='playlist')

A variável PLAYLIST_URL terá a atribuição da URL que foi obtida do Youtube.

O código fonte está comentado para facilitar o entendimento.

Até mais!

Baixar video do Youtube com 2 linhas de código

Muitas vezes queremos baixar um vídeo no Youtube para ver posteriormente, mas os sites que existem para isso contém malwares que podem ser instalados no seu computador.

Por isso, algumas vezes é melhor você mesmo fazer o download com poucas linhas de código em Python.

Somente fique atento aos direitos autorais de músicas, filmes e artistas em geral, porque existem leis que protegem os direitos autorais do autor da obra e utilizar a obra sem autorização é crime.

Esse snippet é somente ilustrativo para você exercitar a sua programação e conhecer mais uma biblioteca neste vasto mundo do Python.

A biblioteca que utilizaremos é a pytube.

A Pytube é um biblioteca que se define como “leve e livre de dependências para baixar vídeos do Youtube”.

Simples assim!

Vamos ao snippet!

from pytube import YouTube

YouTube("https://www.youtube.com/watch? \
v=a72yIwfvZXg").streams.get_highest_resolution().download()

O caracter “\” no final da segunda linha é somente para a quebra de linha explícita e facilitar o copy e paste do código. Na verdade, é uma única string com os parâmetros e métodos.

Se o vídeo no Youtube tiver restrição de idade (“age_restricted”) ele dará um erro, nesse caso, é bom dar uma verificada na documentação da biblioteca para contornar essa restrição. Podemos tratar essa situação em outro post.

O vídeo será baixado na mesma pasta que o código Python está sendo executado.

Não esqueça de instalar antes a biblioteca com o comando abaixo na linha de comando (cmd):

c:> pip install pytube

Nesse exemplo, utilizamos o vídeo do canal Dev Aprender do Jhonatan de Souza, que possui vídeos excelentes sobre Python e sua utilização.

Conheça mais sobre a biblioteca pytube e explore novas opções de download!

Até mais!

Baixar audio de um video no Youtube

Muitas vezes queremos baixar somente o som de um vídeo no Youtube, mas os sites que existem para isso contém muitas armadilhas que podem instalar malwares no seu computador, enquanto realizam o download para você.

Por isso, algumas vezes é melhor você mesmo fazer o download com poucas linhas de código em Python.

Somente fique atento aos direitos autorais de músicas, filmes e artistas em geral, porque existem leis que protegem os direitos autorais do autor da obra e utilizar a obra sem autorização é crime.

Esse snippet é somente ilustrativo para você exercitar a sua programação e conhecer mais uma biblioteca neste vasto mundo do Python.

A biblioteca que utilizaremos é a pytube.

A Pytube é um biblioteca que se define como “leve e livre de dependências para baixar vídeos do Youtube”.

Simples assim!

Vamos ao snippet!

from pytube import YouTube

VIDEO_URL = 'https://www.youtube.com/watch?v=FBLAV1SbJFk&t=2s'
yt = YouTube(VIDEO_URL)

audio = yt.streams.filter(only_audio=True)[0]
audio.download()

Na variável VIDEO_URL você incluirá a URL do vídeo do Youtube que será realizado o download.

Não esqueça de instalar antes a biblioteca com o comando abaixo na linha de comando (cmd):

c:> pip install pytube

Nesse exemplo, utilizamos o vídeo do canal Dev Aprender do Jhonatan de Souza, que possui vídeos excelentes sobre Python e sua utilização.

Conheça mais sobre a biblioteca pytube e explore novas opções de download!

Até mais!