ich habe mich erst ganz frisch mit Python beschäftigt, bin also absoluter Neuling, daher seht es mir bitte nach, wenn das zu einfach für euch ist.
Habe ein kleines Script gebastelt welches mir in vielen Dateien, automatisiert immer den gleichen String gegen nichts ersetzen soll (also einfach die Zeile löschen).
Mit ganz normalen Textdateien und einem ganz einfachen String (drei einfache Worte) hat alles super funktioniert, aber mit HTML Seiten, aus denen ich eine Zeile in Form eines Link Tags löschen möchte, geht es leider nicht. Folgenden Code habe ich bisher.
Code: Alles auswählen
import os
i=1 #nur debug
textout = '<link href="https://www.xyz.de/modules/mod_jbcookies/assets/css/jbcookies.css?6b6e0028f4c0076981af93b286e93945" rel="stylesheet" />'
textin = ''
extension_filter = '.html'
path = 'C:\\Users\\Firestone\\Desktop\\test1'
webfiles = [os.path.join(dirpath, f)
for dirpath, dirnames, files in os.walk(path)
for f in files if f.endswith(extension_filter)]
for datei in webfiles:
if open(datei, "rt").read().find(textout) == 0:
with open(datei, 'r', errors='ignore') as file:
data = file.read()
data = data.replace(textout, textin)
with open(datei, 'w', errors='ignore') as file:
file.write(data)
i =i+1
print(i) #sind Dateien angepasst worden?
Traceback (most recent call last):
File "c:\Users\Firestone\Desktop\test\import os.py", line 15, in <module>
if open(datei, "rt").read().find(textout) == 0:
File "C:\Users\Firestone\AppData\Local\Programs\Python\Python310\lib\encodings\cp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 44665: character maps to <undefined>
Was ich schon probiert habe ist die open Methode mit encoding="utf8" und mit errors='ignore' zu nutzen.
Dann war zwar die Fehlermeldung weg und das Script läuft durch, aber der String wurde in den HTML Dateien nicht gelöscht.
Könnt ihr mir irgendwie mit einfachen Worten erklären was ich falsch mache, bzw. wie ich das Vorhaben umsetzen kann?
Herzlichen Dank und viele Grüße
Hans