Вопрос в следующем. Была ли у кого-нибудь подобная проблема на FTP-сервере?
Это FTP-ссылка, к которой я пытаюсь получить доступ: ftp://ftp.mtps.gov.br/pdet /microdados/
путь для загрузки файла «dicionario_dados.xlsx» находится на ftp-сервере: ftp://ftp.mtps.gov.br/pdet/microdados/NOVO%20CAGED /Legado/Movimenta%C3%A7%C3%B5es/Layout%20Novo%20Caged%20Movimenta%C3%A7%C3%A3o.xlsx
Код: Выделить всё
from os import remove
from py7zr import SevenZipFile
import pandas as pd
import wget
import numpy as np
import warnings
Код: Выделить всё
excel = pd.ExcelFile("data/dicionario_dados.xlsx")
get_dict = lambda x: pd.read_excel(excel, sheet_name=x)
data_dict = {
sheet: {row[1]: row[2] for row in
get_dict(sheet).itertuples()}
for sheet in excel.sheet_names[1:]
}
url = lambda year, month: f"ftp://ftp.mtps.gov.br/pdet/microdados/NOVO CAGED/{year}/{year}{month:02d}/CAGEDMOV{year}{month:02d}.7z"
Код: Выделить всё
dfs = []
start_year = 2020
start_month = 4
dates = []
#dates = data["competênciamov"].unique()
for year in range(start_year, 2025):
for month in range(start_month, 13):
if f"{year}-{month:02d}-01" in dates:
continue
try:
print(f"{month:02d}/{year}")
wget.download(url(year, month), 'caged.7z')
archive = SevenZipFile('caged.7z', mode = 'r')
print('Microdata downloaded successfully, ready for reading')
for name, fd in archive.read(name for name in archive.getnames() if name.endswith(".txt")).items():
caged_raw = pd.read_csv(fd, delimiter=";", decimal=",")
caged_raw = caged_raw.loc[caged_raw["uf"] == 25, :].reset_index(drop=True)
for col in caged_raw.columns:
if col in data_dict:
caged_raw[f"{col}_cod"] = caged_raw[col]
caged_raw[col] = caged_raw[col].apply(lambda x: data_dict[col][x]
if x in data_dict[col] else np.nan)
dfs.append(caged_raw)
archive.close()
remove('caged.7z')
print('Reading completed successfully')
except Exception as e:
print(f'Error processing {month:02d}/{year}: {e}')
print('Microdata for the selected month is not yet available')
break
Код: Выделить всё
04/2020
Microdata downloaded successfully, ready for reading
Error processing 04/2020: Corrupt input data
Microdata for the selected month is not yet available
04/2021
Microdata downloaded successfully, ready for reading
Error processing 04/2021: Corrupt input data
Microdata for the selected month is not yet available
04/2022
Microdata downloaded successfully, ready for reading
Error processing 04/2022: Corrupt input data
Microdata for the selected month is not yet available
04/2023
Microdata downloaded successfully, ready for reading
Error processing 04/2023: Corrupt input data
Microdata for the selected month is not yet available
04/2024
Microdata downloaded successfully, ready for reading
Error processing 04/2024: Corrupt input data
Microdata for the selected month is not yet available
Подробнее здесь: https://stackoverflow.com/questions/790 ... rver-caged