У меня есть скрипт, который я использую для получения определенных файлов через SFTP на регулярной основе.Иногда сценарий выдает ошибку со следующим выводом:
Traceback (most recent call last):
File "ETL.py", line 304, in <module>
get_all_files(startdate, enddate, "vma" +
foldernumber + "/logs/", txtype[1] + single_date2 + ".log", txtype[2] +
foldernumber + "\\", sftp)
File "ETL.py", line 283, in get_all_files
sftp.get(sftp_dir + filename, local_dir + filename)
File "C:\Python27\lib\site-packages\pysftp\__init__.py", line 249, in get
self._sftp.get(remotepath, localpath, callback=callback)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 806, in get
"size mismatch in get! {} != {}".format(s.st_size, size)
IOError: size mismatch in get! 950272 != 1018742
Я просмотрел документацию Paramiko и не вижу объяснения, что может вызвать эту ошибку.Кроме того, код часто успешно работает при последующих попытках или будет успешно выполняться для первых нескольких файлов в диапазоне дат, а затем в процессе загрузки произойдет ошибка во время загрузки всех файлов, которые мне нужно получить.Другие ответы на SO говорят, что это может быть связано с местом на диске, но я попытался очистить папку назначения, но это не помогло.Я пытаюсь загрузить на сетевой диск / облачное хранилище, если это имеет какое-либо значение
Вот функция и код, который я использую для извлечения файлов (через Paramiko):
def get_all_files(start_date, end_date, sftp_dir, filename, local_dir, \
sftp_connection):
sftp.get(sftp_dir + filename, local_dir + filename)
with pysftp.Connection('******.com', username='*****', password='******', cnopts=cnopts) as sftp:
get_all_files(startdate, enddate, "vma" + foldernumber + "/logs/", txtype[1] + single_date2 + ".log", txtype[2] + foldernumber + "\\", sftp)
Я хочу, чтобы все загружаемые файлы были получены без этой ошибки.