Skip to content

Instantly share code, notes, and snippets.

@gustavorps
Last active March 30, 2019 17:39
Show Gist options
  • Save gustavorps/29f3ca1e956975168f5490bee72f0f0a to your computer and use it in GitHub Desktop.
Save gustavorps/29f3ca1e956975168f5490bee72f0f0a to your computer and use it in GitHub Desktop.
# https://stackoverflow.com/questions/5137497/find-current-directory-and-files-directory
import ftplib
import os
## Dominio do FTP
host = 'ftp.datasus.gov.br'
## Caminho do diretório no FTP contendo os arquivos
path = '/dissemin/publicos/SIHSUS/200801_/dados/'
## Caminho do diretório de destino dos arquivo que serão baixados
files_dir = os.getcwd() + '/download_datasus'
## Cria diretório se não existir
os.makedirs(files_dir, exist_ok=True)
# Cria instáncia do FTP
ftp = ftplib.FTP()
# Se conecta ao dominio
ftp.connect(host)
# Loga ao FTP
ftp.login()
# Entra no diretório contendo os arquivos
ftp.cwd(path)
# Lista os arquivos por nome e coloca em uma array
filename_list = ftp.nlst()
# Faz um loop pelo
for filename in filename_list:
# Junta o caminho do diretório com nome do arquivo
# para ter o caminho completo da onde o arquivo deve ser salvo
local_filename = os.path.join(files_dir, filename)
# Abre o arquivo para escrita
file = open(local_filename, 'wb')
# Baixa o arquivo do FTP e escreve no arquivo aberto
ftp.retrbinary('RETR '+ filename, file.write)
# Exibir nome do arquivo
print(filename)
# Feccha o arquivo que foi aberto para escrita
file.close()
# Fecha a conexão com o FTP
ftp.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment