13 Stimmen

Datei öffnen, lesen, verarbeiten und zurückschreiben - die kürzeste Methode in Python

Ich möchte einige grundlegende Filterungen in einer Datei vornehmen. Lesen, verarbeiten, zurückschreiben.

Ich bin nicht auf der Suche nach "Golfspielen", sondern nach der einfachsten und elegantesten Methode, um dies zu erreichen. Ich habe mir das ausgedacht:

from __future__ import with_statement

filename = "..." # or sys.argv...

with open(filename) as f:
    new_txt = # ...some translation of f.read() 

open(filename, 'w').write(new_txt)

Le site with Anweisung macht die Sache kürzer, da ich die Datei nicht explizit öffnen und schließen muss.

Irgendwelche anderen Ideen?

0voto

muhuk Punkte 15179

Meine hässliche (aber kurze, wie in der Frage angegebene) Lösung mit Generatorausdrücke ;

# Some setup first
file('test.txt', 'w').write('\n'.join('%05d' % i for i in range(100)))

# This is the filter function
def f(i):
    return i % 3

# This is the main part 
file('test2.txt', 'w').write('\n'.join(str(f(int(l))) for l in file('test.txt', 'r').readlines()))

# And a wrapper for sanity
def filter_file(infile, outfile, filter_function)
    outfile.write('\n'.join(filter_function(l) for l in infile.readlines()))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X