Сохраните изображения с filenams из списка с помощью Python - PullRequest
0 голосов
/ 31 октября 2019

У меня есть список URL-адресов, которые указывают на изображения. Я хочу сохранить эти изображения с именами файлов, содержащимися в URL. Пока я могу сохранить все изображения с добавочными именами файлов (не то, что я хочу) или сохранить одно изображение с именем файла, взятым из URL (не то, что я хочу).

URL выглядят так:

http://foto.munchmuseet.no/fotoweb/cache/5018/Arkiv/G0003-02_20151201.t565f114c.m2400.tif.pv.xHYHOucgy.jpg

Регулярное выражение для извлечения имен файлов (G0003-02_20151201) выглядит следующим образом:

fn = re.findall('(?<=Arkiv/)(.*?)(?=\.t)', urlstr)

Код для сохранения изображений выглядит следующим образом:

imgData = "./images/"
try:
    os.makedirs(imgData)
except:
    pass
iimage = 0
for urls in url:
    try:
        f = open((imgData + '{}.jpg'.format(iimage)),'wb')
        f.write(requests.get(urls).content)
        f.close()
        iimage += 1
    except Exception as e:
        print("\n{} {}".format(e,urls))
        pass

Я хочу заменить iimage значениями из списка, сгенерированного из регулярного выражения для каждого URL.

1 Ответ

1 голос
/ 31 октября 2019

Это один подход, использующий os.path.basename с str.split.

Пример:

import os
import requests

imgData = "./images/"
try:
    os.makedirs(imgData)
except:
    pass

for url in urls:
    try:
        f = open((imgData + '{}.jpg'.format(os.path.basename(url).split(".")[0])),'wb')
        f.write(requests.get(url).content)
        f.close()

    except Exception as e:
        print("\n{} {}".format(e,urls))
        pass

import os
url = "http://foto.munchmuseet.no/fotoweb/cache/5018/Arkiv/G0003-02_20151201.t565f114c.m2400.tif.pv.xHYHOucgy.jpg"
print(os.path.basename(url).split(".")[0])
# -->G0003-02_20151201
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...