Last active
March 30, 2019 17:39
-
-
Save gustavorps/29f3ca1e956975168f5490bee72f0f0a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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