#python
Вопрос:
Моя цель-создать небольшую программу на Python, которая будет получать изображение каждые пять минут на веб-сайте по URL-адресу изображения. Пока все работает, но ограничение состоит в том, чтобы добавлять 1 к каждому новому изображению, сохраненному в каталоге, иначе полученное новое изображение заменит старое в каталоге. Так что вам нужно приращение. Моя программа работает, но каждые пять минут новое изображение заменяет старое, так как у них одно и то же имя. Мое увеличение имени файла не работает.
Вот моя программа на Python:
#-*- coding: utf-8 -*-
import urllib.request
import time
import os
import os.path
i = 0
while True:
urllib.request.urlretrieve("https://url/image.jpg", "image.jpg")
while os.path.exists("image%i.jpg"):
i = i 1
time.sleep(300)
Заранее благодарю вас за вашу помощь !
Ответ №1:
Вы можете использовать f-строку, это простой способ форматирования строк в python:
Они работают так: Документация по F-строкам Python
name = "Tom"
print(f"Hello {name}")
> Hello Tom
#-*- coding: utf-8 -*-
import urllib.request
import time
import os
import os.path
image_count = 0
while True:
urllib.request.urlretrieve("https://url/image.jpg", "image.jpg")
while os.path.exists(f"image-{image_count}.jpg"):
image_count = 1
time.sleep(300)
Комментарии:
1. Прежде всего, спасибо, что ответили на мою проблему. К сожалению, программа останавливается на «image_count» с ошибкой : Ошибка отступа: ожидался блок с отступом
2. Привет @BTB, не копируйте и не вставляйте мой ответ, а наберите его: я использовал пробел для намерения, а не клавишу TAB, которую распознает только python! Тогда это должно работать нормально:)
Ответ №2:
Попробуйте переместить проверку файла перед сохранением файла, а затем обязательно добавьте значение I в папку сохранения.
i = 0
while True:
while os.path.exists(f"image{str(i)}.jpg"):
i =1
urllib.request.urlretrieve("https://url/image.jpg", f"image{str(i)}.jpg")
time.sleep(300)
Комментарии:
1. Спасибо, что ответили на мою проблему. Однако программа сохраняет имя переменной «%i» непосредственно в имени файла. Поэтому программа всегда заменяет одно и то же имя файла на «image%i.jpg». В конечном счете программа делает то же самое, что и раньше.
2. @BTB Это моя ошибка, я отредактировал сообщение, чтобы использовать f-строку, и это должно помочь!
3. Программа работает ! Еще раз спасибо вам за вашу помощь !