У меня есть сценарий Selenium (Chrome), который переходит по URL-адресу и последовательно загружает несколько файлов. Но все имена gibberi sh, и поэтому ни Selenium, ни Chrome не могут контролировать имя загруженного файла. Итак, что я хочу сделать, это посмотреть каталог загрузки для всех новых файлов, которые создаются, а затем переименовать их при создании на собственное имя.
Как мне go узнать об этом? Я слышал, что watchdog
- хороший пакет для создания и регистрации EventListener. Но тогда как мне динамически передать обработчику определенное имя, когда срабатывает событие on_created
? watchdog - правильный путь к go или есть какое-то другое решение, которое может работать?
ПРИМЕЧАНИЕ. Я попытался получить все данные в каталоге, используя 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)