У меня есть скрипт Selenium (Chrome), который переходит по URL-адресу и последовательно загружает кучу файлов. Но все имена — тарабарщина, и поэтому ни Selenium, ни Chrome не контролируют имя загружаемого файла. Итак, что я хочу сделать, это посмотреть каталог загрузки на предмет любых новых файлов, которые создаются, а затем переименовать их при создании с именем по своему выбору.
Как мне это сделать? Я слышал, что watchdog
— хороший пакет для создания и регистрации EventListener. Но тогда как мне динамически передать обработчику определенное имя при запуске события on_created
? Является ли watchdog правильным решением или есть какое-то другое решение, которое может сработать?
ПРИМЕЧАНИЕ. Я попытался получить все файлы в каталоге с помощью glob
, а затем обновить имя последнего файла, сравнив время создания, но это приводит к логической ошибке, поскольку имена файлов смешиваются в случае, если новый файл не загружен к моменту выполнения этого метода. Я прикрепил код ниже для этого метода.
def __rename_downloaded_file(self, filename: str):
"""Rename the latest download file to the given name"""
# TODO create a listener instead of the while loop
while True:
# keep looping in case there are no file in directory.
list_of_files = glob.glob(f"{self.download_path}\\*.pdf")
if len(list_of_files) > 0:
break
latest_file = max(list_of_files, key=os.path.getctime)
print(latest_file)
head, _ = os.path.split(latest_file)
new_filename = os.path.join(head, filename+'.pdf')
print(new_filename)
os.rename(latest_file, new_filename)
wget
. - person Ayush Nair   schedule 02.05.2020403 Forbidden
. Пробовал с библиотекойrequests
тоже не получилось. Не принимает стандартные сертификаты ЦС - person Ayush Nair   schedule 06.05.2020