Ich versuche, eine Host-Datei mit einem Python-Skript zu verwalten. Ich bin neu bei Python und es fällt mir schwer herauszufinden, wie man eine Zeile ersetzt, wenn ich eine Übereinstimmung finde. Wenn zum Beispiel die Adresse in einer Hostdatei für eine Website geändert wird, möchte ich, dass das Skript sie findet und zurück ändert. Danke für Ihre Hilfe.Python ersetzen Linie in Textdatei
import os
import time
#location to the host file to read and write to
hosts_path=r"C:\Windows\System32\drivers\etc\hosts"
#the address I want for the sites
redirect="0.0.0.0"
#the websites that I will set the address for
website_list=["portal.citidirect.com","www.bcinet.nc","secure.banque-tahiti.pf","www.bancatlan.hn","www.bancentro.com.ni","www.davivienda.com.sv","www.davivienda.cr","cmo.cibc.com","www.bi.com.gt","empresas.banistmo.com","online.belizebank.com","online.westernunion.com","archive.clickatell.com"]
#continuous loop
while True:
with open(hosts_path,'r+') as file:
content=file.read()
#for each of the websites in the list above make sure they are in the host file with the correct address
for website in website_list:
site=redirect+" "+ website
#here is where I have an issue, if the website is in the host file but with the wrong address I want to write over the line, instead the program is adding it to the end of the file
if website in content:
if site in content:
pass
else:
file.write(site)
else:
file.write("\n"+site)
time.sleep(300)
os.system('ipconfig /flushdns')
Es ist viel einfacher, die geänderten Zeilen in eine _new_Datei zu schreiben und die Datei anschließend in den alten Namen umzubenennen, wenn Sie fertig sind. Es ist sehr schwierig, eine vorhandene Datei vor Ort zu aktualisieren. –
Das Problem hier ist, dass Sie die gesamte Datei lesen und dann die Daten scannen. Natürlich kann dieses Problem mit diesem Ansatz gelöst werden, aber ein schnellerer und einfacherer Weg wäre, die Datei Zeile für Zeile zu scannen. –
Danke für die Antworten. John Gordon Ich mag die Idee, eine andere Datei zu verwenden. – jbvo