Проблема с получением последнего измененного файла ftplib
ftp = ftplib.FTP(host=host, user=login, passwd=password, timeout=10000, encoding='UTF-8')
ftp.set_pasv(False)
###############################################################
def GetFileFtp():
ftp.cwd("/SD1/Log")
folderInfo = ftp.mlsd(facts=["type", "modify", "size"])
latestFObj = None
for f in folderInfo:
fType = f[1]["type"]
if not fType == "file":
continue
if latestFObj == None:
latestFObj = f
else:
if latestFObj[1]["modify"] <= f[1]["modify"]:
latestFObj = f
result = latestFObj[0]
print(f"The latest file is {result}")
print("Файл получен!")
with open('text.txt', 'wb') as file:
ftp.retrbinary(f"RETR {result}", file.write)
Была проблема выполнения команд, посоветовали отключить пассивный режим. Команды стали выполнятся, такие как fpt.dir() к примеру. Но появились ошибки в другом блоке.
Ошибка следующая:
c:/Users/ADV/Desktop/asulab/asulabTG.py
Traceback (most recent call last):
File "c:\Users\ADV\Desktop\asulab\asulabTG.py", line 51, in <module>
GetFileFtp()
File "c:\Users\ADV\Desktop\asulab\asulabTG.py", line 22, in GetFileFtp
for f in folderInfo:
File "C:\Users\ADV\AppData\Local\Programs\Python\Python312\Lib\ftplib.py", line 578, in mlsd
self.sendcmd("OPTS MLST " + ";".join(facts) + ";")
File "C:\Users\ADV\AppData\Local\Programs\Python\Python312\Lib\ftplib.py", line 281, in sendcmd
return self.getresp()
^^^^^^^^^^^^^^
File "C:\Users\ADV\AppData\Local\Programs\Python\Python312\Lib\ftplib.py", line 254, in getresp
raise error_perm(resp)
ftplib.error_perm: 502 Invalid command.