Я пытаюсь получить список файлов, которые полностью загружены на FTP-сервер. У меня есть доступ к этому FTP-серверу, на котором третьи лица записывают данные и файлы маркеров каждые 15 минут. Когда файл данных полностью загружен, создается файл маркера. мы знаем, что когда этот маркерный файл появится, это означает, что файлы данных готовы, и мы можем его скачать. Я ищу способ эффективно подойти к этой проблеме. Я хочу каждую минуту проверять, есть ли новые стабильные файлы на FTP-сервере, если они есть, я буду загружать эти файлы. Один из предпочтительных способов - посмотреть, если файлу маркера 2 минуты, тогда мы можем скачать файл маркера и соответствующий файл данных. Я новичок с python и ищу помощи. У меня есть код, пока я не перечислю файлы
import paramiko
from datetime import datetime, timedelta
FTP_HOST = 'host_address'
FTP_PORT = 21
FTP_USERNAME = 'username'
FTP_PASSWORD = 'password'
FTP_ROOT_PATH = 'path_to_dir'
def today():
return datetime.strftime(datetime.now(), '%Y%m%d')
def open_ftp_connection(ftp_host, ftp_port, ftp_username, ftp_password):
"""
Opens ftp connection and returns connection object
"""
client = paramiko.SSHClient()
client.load_system_host_keys()
try:
transport = paramiko.Transport(ftp_host, ftp_port)
except Exception as e:
return 'conn_error'
try:
transport.connect(username=ftp_username, password=ftp_password)
except Exception as identifier:
return 'auth_error'
ftp_connection = paramiko.SFTPClient.from_transport(transport)
return ftp_connection
def show_ftp_files_stat():
ftp_connection = open_ftp_connection(FTP_HOST, int(FTP_PORT), FTP_USERNAME, FTP_PASSWORD)
full_ftp_path = FTP_ROOT_PATH + "/" + today()
file_attr_list = ftp_connection.listdir_attr(full_ftp_path)
print(file_attr_list)
for file_attr in file_attr_list:
print(file_attr.filename, file_attr.st_size, file_attr.st_mtime)
if __name__ == '__main__':
show_ftp_files_stat()
Пример имени файла org-reference-delta-quotes.REF.48C2.20200402.92.1.1.txt.gz
Пример соответствующего имени файла маркера org-reference-delta-quotes.REF.48C2.20200402.92.note.txt.gz