Как добавить обработку ошибок с Python paramiko sftp при получении имени файла с последней отметкой времени - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть приведенный ниже скрипт Python Paramiko SFTP для загрузки файла из SFTP, в который включена часть имени файла и где загрузка файла имеет самую последнюю временную метку (на основе Как загрузить только последний файл с сервера SFTP с помощью Paramiko ). Однако я не уверен, как добавить обработку ошибок в код:

RemotePath='/WM_Universe/out/'
RemoteFilename='EDI_CAB_Red_Part_'
LocalPath='O:/Datafeed/Debt/WMDaten/PoolFactor/In/'

#Create Date LongDate/ShortDate
date = datetime.date.today() 

ldate=(date.strftime ("%Y%m%d"))

latest = 0
latestfile = None

for fileattr in sftp.listdir_attr():

if fileattr.filename.startswith(RemoteFilename + ldate) and fileattr.st_mtime > latest:
    latest = fileattr.st_mtime
    latestfile = fileattr.filename

print (LocalPath + latestfile)

if latestfile is not None:
    sftp.get(latestfile, LocalPath + latestfile)  

Если файл недоступен с указанным выше именем и имеет самую последнюю временную метку, я получаю следующую ошибку:

Traceback (most recent call last):
  File "C:/Users/username/PycharmProjects/SFTP.py", line 72, in <module>
    print (LocalPath + latestfile)
TypeError: can only concatenate str (not "NoneType") to str

Я ценю любую помощь по внедрению соответствующей обработки ошибок для доступности / успешной загрузки файла или нет. Заранее спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Напечатайте найденное имя файла, только если вы действительно его найдете:

if fileattr.filename.startswith(RemoteFilename + ldate) and fileattr.st_mtime > latest:
    latest = fileattr.st_mtime
    latestfile = fileattr.filename

if latestfile is not None:
    print (LocalPath + latestfile)
    sftp.get(latestfile, LocalPath + latestfile)  
else:
    print("No such file")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...