Проблемы с модулем «загрузчик» bing_image_downloader при установке параметра «force_replace» в значение TruePython

Программы на Python
Ответить
Anonymous
 Проблемы с модулем «загрузчик» bing_image_downloader при установке параметра «force_replace» в значение True

Сообщение Anonymous »

Я создаю сценарий для загрузки изображений из Bing с использованием модуля загрузчика в библиотеке bing_image_downloader.
Это мой код в его нынешнем виде. Это работает, если я устанавливаю для параметра Force_replace значение False, но я хочу, чтобы выходной каталог обновлялся каждый раз при запуске сценария.
Текущий код:

Код: Выделить всё

import smtplib
from email.message import EmailMessage
import os
from bing_image_downloader import downloader
import random
from dotenv import dotenv_values
import time

#Load environment variables
config = dotenv_values(".env")

#Downloading images from Bing with the specified search query
search_query = "cute penguin"
downloader.download(search_query, limit=30, timeout=60, output_dir="dataset2", force_replace=True)

time.sleep(5)

#Getting a random image
random_image = random.choice(os.listdir(f"dataset2/{search_query}"))

#Email Details
sender_email = config["sender_email"]
receiver_email = config["email"]
subject = "Test Email"
body = "This is a test email"
password = config['sender_password']

#Create Email Message
msg = EmailMessage()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject
msg.set_content(body)

#Path to the image file
image_path = f"dataset2/{search_query}/{random_image}"

#Read the image file
with open(image_path, "rb") as image_file:
image_data = image_file.read()
image_name = os.path.basename(image_path)

#Add image as attachment
msg.add_attachment(image_data, maintype="image", subtype="jpeg", filename=image_name)

with smtplib.SMTP("smtp.gmail.com") as connection:
connection.starttls()
connection.login(user=sender_email, password=password)
connection.send_message(msg)
print("Email sent successfully")
При запуске этого скрипта я получаю следующую ошибку:

Код: Выделить всё

 "AttributeError: type object 'Path' has no attribute 'isdir'. Did you mean: 'is_dir'?"
Затем я зашел в модуль «загрузчик» и посмотрел на функцию «загрузка».

Код: Выделить всё

import os, sys
import shutil
from pathlib import Path

try:
from bing import Bing
except ImportError:  # Python 3
from .bing import Bing

def download(query, limit=100, output_dir='dataset', adult_filter_off=True,
force_replace=False, timeout=60, filter="", verbose=True):

# engine = 'bing'
if adult_filter_off:
adult = 'off'
else:
adult = 'on'

image_dir = Path(output_dir).joinpath(query).absolute()

if force_replace:
if Path.isdir(image_dir):
shutil.rmtree(image_dir)

# check directory and create if necessary
try:
if not Path.is_dir(image_dir):
Path.mkdir(image_dir, parents=True)

except Exception as e:
print('[Error]Failed to create directory.', e)
sys.exit(1)

print("[%] Downloading Images to {}".format(str(image_dir.absolute())))
bing = Bing(query, limit, image_dir, adult, timeout, filter, verbose)
bing.run()

if __name__ == '__main__':
download('dog', output_dir="..\\Users\\cat", limit=10, timeout=1)
Я изменил оригинал if Path.isdir(image_dir)

Код: Выделить всё

 image_dir = Path(output_dir).joinpath(query).absolute()

if force_replace:
if Path.isdir(image_dir):
shutil.rmtree(image_dir)
в if Path.is_dir(image_dir)

Код: Выделить всё

 image_dir = Path(output_dir).joinpath(query).absolute()

if force_replace:
if Path.is_dir(image_dir):
shutil.rmtree(image_dir)
После того, как я внес эту модификацию, код с первого раза работал идеально (папка «набор данных2» отсутствует в файлах), но если бы я запустил его во второй раз, я получил бы следующую ошибку.< /p>

Код: Выделить всё

PermissionError: [WinError 5] Access is denied
Я изучаю Python уже несколько месяцев, поэтому, пожалуйста, извините за все, что я еще не понял. Есть идеи, в чем может быть проблема?


Подробнее здесь: https://stackoverflow.com/questions/793 ... replace-pa
Ответить

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

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

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

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

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