Como baixar um arquivo Excel do GitHub via Python?

Michelle Mesquita
3 min readFeb 17, 2022

--

Resolvi escrever essa dica rápida por aqui, pois estive me deparando com esse problema em meu código e não existe uma rápida documentação com essa solução, mesmo ela sendo simples

Imagine o cenário que você está desenvolvendo um código e no meio dele, é necessário baixar um arquivo Excel que é armazenado no GitHub e é necessário ler esse arquivo. O primeiro desafio que se vem a mente é pelo arquivo Excel ser um binário! Obviamente, é possível resolver utilizando o mesmo problema utilizando curl, wget, ou o link raw do GitHub

No entanto, o objetivo era continuar utilizando todo o ecossistema Python e a API proveniente do GitHub

Bom, já aproveito para deixar a documentação da API do GitHub aqui :)

Para começar, devemos lembrar que o paralelo do curl no Python é a biblioteca requests!

Além disso, antes de vermos o código, vamos imaginar um cenário com autenticação, pois dificilmente você terá um projeto público no dia a dia do trabalho

Para isso, vamos criar o nosso token (que servirá para nos autenticarmos, sem passarmos a nossa senha e usuário)

Seguimos o seguinte caminho: configurações > developer settings > personal token

Você pode seguir o passo aqui:

Depois de criado o token, vamos ao código!

import pandas as pd
import requests
url = f'https://api.github.com/repos/{user}/{repo}/contents/{file}?ref={branch}'data = requests.get(url, headers={'Authorization': f'token {gh_token}', 'Accept': 'application/vnd.github.v3.raw'})
with open("test_excel.xlsx", 'wb') as f: f.write(data.content)df = pd.read_excel('test_excel.xlsx')print(df)

Será necessário trocar para o nome do seu usuário, repositório, arquivo.xlsx e a branch que seu código está armazenado (main ou master, por exemplo) aonde foram passadas as {variáveis}

Assim, você utilizará a API de forma autenticada (Header Authorization), além de salvar o conteúdo desse arquivo Excel (binário), no diretório corrente. Assim, será necessária utilizar a função f.write() para salvar o binário com o nome do arquivo 'test_excel.xlsx' e o parâmetro 'wb', justamente para escrever o binário

No final, utilizamos a biblioteca Pandas apenas para ler o resultado do nosso Excel com a função read_excel()

Espero que essa dica tenha sido útil para vocês 💜

--

--

Michelle Mesquita
Michelle Mesquita

Written by Michelle Mesquita

DevSecOps & AppSec Engineer & Developer girl 👩‍💻

No responses yet