Osadzanie obrazków w Html za pomocą Pythona - jedna wersja działa inna nie - dlaczego?!?

24 views
Skip to first unread message

Szyk Cech

unread,
Apr 4, 2019, 9:29:42 AM4/4/19
to
Witam
Podam pełną wersję mojej funkcji do osadzania całego obrazka w kodzie
html. Skrypt wykrywa normalny odnośnik do obrazka i go wymienia na ciało
kodowane w Base64. Oto kod:

def gEmbedImages(aPage):
lResult = aPage
lRe =
re.compile(r"""<img\s+src\s*=\s*\"(.+?)"\s+alt\s*=\s*"(.+?)"/>""",
re.IGNORECASE)
lMatch = lRe.search(aPage)
while lMatch:
if not os.path.isfile(lMatch.group(1)):
raise Exception("File not found! File:
{0}".format(lMatch.group(1)))
f = open(lMatch.group(1), 'rb')
#lBase64 = """<img alt="{1}"
src=”data:image/png;base64,{0}"/>""".format(base64.b64encode(f.read()).decode('ascii').replace('\n',
''), lMatch.group(2))
lBase64 = """<img alt="%s" src="data:image/png;base64,%s"/>""" %
(lMatch.group(2),
base64.b64encode(f.read()).decode('ascii').replace('\n', ''))
lResult = lResult.replace(lMatch.group(0), lBase64)
lMatch = lRe.search(aPage, lMatch.end())
return lResult

Moje pytanie jest takie:
Dlaczego linia:
#lBase64 = """<img alt="{1}"
src=”data:image/png;base64,{0}"/>""".format(base64.b64encode(f.read()).decode('ascii').replace('\n',
''), lMatch.group(2))

nie działa (błędnie koduje)?
A linia:

lBase64 = """<img alt="%s" src="data:image/png;base64,%s"/>""" %
(lMatch.group(2),
base64.b64encode(f.read()).decode('ascii').replace('\n', ''))

działa bez zarzutu?!?

dzięki i pozdro
Szyk Cech

John Doe

unread,
Apr 5, 2019, 10:06:02 AM4/5/19
to
On 2019-04-04, Szyk Cech <szyk...@spoko.pl> wrote:
> Moje pytanie jest takie:
> Dlaczego linia:
> #lBase64 = """<img alt="{1}"


# hash w pythonie oznacza komentarz, usunac "#" sprzed lbase64?

Szyk Cech

unread,
Apr 5, 2019, 12:19:31 PM4/5/19
to
W dniu 05.04.2019 o 16:06, John Doe pisze:
Ha! Ha! Ha!
Może jakieś mądrzejsze powody...
Ta linia jest teraz zakomentowana bo nie działa - pracuję na kolejnej
linii która działa...

John Doe

unread,
Apr 5, 2019, 1:13:41 PM4/5/19
to
Haha, niestety wrzucajac taki kod zwraca sie pierwsze co na takie bledy,
bo takich bledow jest od diabli.
Reply all
Reply to author
Forward
0 new messages