Файлы, загруженные с моего веб-сканера с помощью селена chromedriver, выводятся в неправильный каталог.Python

Программы на Python
Ответить
Anonymous
 Файлы, загруженные с моего веб-сканера с помощью селена chromedriver, выводятся в неправильный каталог.

Сообщение Anonymous »

Я пытаюсь упаковать сценарий main.py в исполняемый файл с помощью PyInstaller. Сценарий содержит веб-сканер, который использует Selenium с chromedriver.exe для перехода на веб-сайт и автоматической загрузки файлов (PDF) в определенный каталог с именем «Файлы», расположенный в том же каталоге, что и main.py. Для ясности вот скриншот ожидаемой файловой структуры.
Когда я запускаю main.py напрямую, все работает так, как ожидалось: загрузки идут в каталог «Файлы». Однако после упаковки с помощью PyInstaller с помощью следующей команды:
pyinstaller --onefile --add-data "chromedriver.exe;." --add-data "urls.txt;." main.py
и запустите полученный файл .exe (с chromedriver.exe и urls.txt, включенными в один и тот же каталог), Я столкнулся с проблемой: хотя .exe успешно запускает Chrome и загружает файлы, он больше не создает и не использует каталог «Файлы» в том же месте. Вместо этого загрузки сохраняются во временный каталог, например C:\Users\{username}\AppData\Local\Temp\_MEI78762\Files, который удаляется после выхода из программы, поэтому загруженные файлы становятся недоступны.< /p>
Ниже приведен код, который я использую для установки пути загрузки. Логика пытается определить базовый путь к исполняемому файлу, но это не работает должным образом:
# Determine the base path
if getattr(sys, 'frozen', False):
# If the application is run as a bundle, the PyInstaller bootloader
# extends the sys module by a flag frozen=True and sets the app
# path into variable _MEIPASS'.
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")

# Create the Files directory if it doesn't exist
download_dir = os.path.join(base_path, "Files")
if not os.path.exists(download_dir):
os.makedirs(download_dir)
# Extract all URLS from urls.txt and store in a variable call urls
urls = []
with open("./test_urls.txt", "r") as file:
urls = file.readlines()

# Configure Chrome options to set the download directory and disable the download prompt
chrome_options = webdriver.ChromeOptions()
prefs = {
"download.default_directory": download_dir,
"download.prompt_for_download": False,
"directory_upgrade": True,
"safebrowsing.enabled": True,
"safebrowsing.disable_download_protection": True, # Disable download protection
"profile.default_content_setting_values.automatic_downloads": 1, # Allow automatic downloads
"profile.default_content_settings.popups": 0, # Disable popups
"profile.content_settings.exceptions.automatic_downloads.*.setting": 1 # Allow multiple downloads
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... tputted-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»