Hosts-Datei duchsuchen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
okular
User
Beiträge: 8
Registriert: Dienstag 28. August 2012, 15:13

Hallo Leute,

bestimmt eine einfache Sache, bloß mit Datei-Verarbeitung habe ich noch nix machen müssen:

Ich möchte auf verschiedenen Rechnern die /etc/hosts durchsuchen und wenn eine bestimmte IP auftaucht,
die ganze Zeile löschen.

Hat da jemand etwas auf Lager...?

Vielen Dank!
okular
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Wo ist denn dein Problem, also an welcher Stelle kommst du nicht weiter?
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

okular hat geschrieben:Ich möchte auf verschiedenen Rechnern die /etc/hosts durchsuchen und wenn eine bestimmte IP auftaucht,
die ganze Zeile löschen.
Ein Löschen einer Zeile in einer Datei ist nicht direkt möglich. Du musst die Datei ohne die betreffende Zeile neu schreiben.
okular
User
Beiträge: 8
Registriert: Dienstag 28. August 2012, 15:13

Naja, ich kann zwar den Anfang einer Zeile suchen/finden aber ich kann diese nicht löschen:

Code: Alles auswählen

fil = open('file')
for l in fil.readlines():
    if l.startswith('192.168.133.5'):
        ??? 
Problem ist das Löschen
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Code: Alles auswählen

from itertools import ifilterfalse
from shutil import move


selector = lambda line: line.startswith('192.168.133.5')

with open('orig', 'r') as reader:
    with open('tmp', 'w') as writer:
        writer.writelines(ifilterfalse(selector, reader))
move('tmp', 'orig')
Zuletzt geändert von jbs am Mittwoch 16. Januar 2013, 18:30, insgesamt 1-mal geändert.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
okular
User
Beiträge: 8
Registriert: Dienstag 28. August 2012, 15:13

Puhh...

Also dieses ifilterfalse kannte ich nun echt nicht! Aber scheint zu klappen!

Vielen dank für den sehr guten Hinweis..

okular
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Es ist jetzt aber nun wirklich nicht so, dass das der Kern waere oder es nicht anders ginge:

Code: Alles auswählen

from itertools import ifilterfalse
from shutil import move

with open('orig', 'r') as reader:
    with open('tmp', 'w') as writer:
        for line in reader:
            if not line.startswith('...'):
                writer.write(line)
move('tmp', 'orig')
Antworten