Я предполагаю, что у вас есть папка, содержащая все соответствующие файлы. Таким образом, проблема разделена на две части:
- Запуск в al oop над файлами
- Для каждого файла опустите ссылки
Loopin Over Файлы
Это можно сделать с помощью glob
или os.walk
.
import os
upper_directory = "[insert your directory]"
for dirpath, directories, files in os.walk(upper_directory):
for fname in files:
path = os.path.join(dirpath, fname)
lower_file_references(path)
Строчные ссылки. Ссылки
Если у вас есть путь к файлу, вам нужно прочитать данные из него:
with open(path) as f:
s = f.read()
Когда у вас есть данные файлов ссылок, вы можете использовать этот код для понижения строки ссылки:
head = "<img href="
tail = ">"
img_start = s.find(head, start)
while img_start != -1:
img_end = s.find(">", img_start)
s = s[:img_start] +s[img_start:img_end].lower() + s[img_end:]
img_start = img_end
По-другому вы можно использовать какой-то XML модуль синтаксического анализа. Например, BeautifulSoup, это поможет избежать таких проблем, как href=
против href =
from bs4 import BeautifulSoup as bs
s = bs(s)
imgs = s.find_all("img")
for i in imgs:
if "href" in i.attrs:
i.attrs["href"] = i.attrs["href"].lower()
s = str(s)
В обоих случаях вы можете переписать файлы. Вы можете сделать это следующим образом:
with open(path, "w") as f:
f.write(s)
Соберите все вместе
import os
from bs4 import BeautifulSoup as bs
def lower_file_references(file_path):
with open(path) as f:
s = f.read()
s = bs(s)
imgs = s.find_all("img")
for i in imgs:
if "href" in i.attrs:
i.attrs["href"] = i.attrs["href"].lower()
s = str(s)
with open(path, "w") as f:
f.write(s)
upper_directory = "[insert your directory]"
for dirpath, directories, files in os.walk(upper_directory):
for fname in files:
path = os.path.join(dirpath, fname)
lower_file_references(path)
Я должен сказать, что это простой метод, который будет отлично работать, если ваши файлы не большие , Если у вас есть большие файлы, которые невозможно прочитать в память одновременно, или много файлов, вы можете подумать о том, как избежать чтения данных всех файлов.