2010-12-05 3 views
0

ich habe ein Problem:Python .WRITE() ändern, um

f = open('OUTPUT.txt', 'w') 

def function 
    if ........ 
     ...... 
    f.write(XXX)     #this must be in this loop   #1.write 
    else: 
     .... 
     .... 

....other code... 
................ 

with open("INPUT.txt") as f_in: 
    for line in f_in: 
     for char in line: 
      frequencies[char] += 1 
input= [(count, char) for char, count in frequencies.iteritems()] 

f.write(' '.join("%s=%s" % (y, x) for x,y in input))   #2.write 

f.close() 

Wie Sie sehen können, habe ich 2x schreiben "Funktion" haben, wie kann ich, um in txt-Datei ändern writting; Ich möchte zuerst schreiben "Eingabe", dann "f.write (XXX)"

+0

Ist dies ein Follow-up zu einer anderen Frage? Wenn ja, verlinke es. – Heatsink

+0

Vorherige verwandte Frage zu diesem Thema: http://stackoverflow.com/questions/4361021/python-write-replace-order –

+1

Der Code ist ein wenig unordentlich, versuchen Sie, ein vollständiges Arbeitsbeispiel ordnungsgemäß eingerückt einzufügen. – tokland

Antwort

0

Sie können temporäre Datei verwenden, um zuerst zu schreiben, dann 'Eingabe' Daten in OUTPUT.txt schreiben, dann anhängen Temp-Datei zur Ausgabe .
Wenn die Daten nicht riesig sind (dh in den Speicher passen), könnten Sie StringIO dafür verwenden. Für Python 2.7:

import StringIO 
temp = StringIO.StringIO() 
write xxx to temp file here 
... 
write 'input' data to output file here 
temp.seek(0) # sets current position in file to it's beginning 
for line in temp: 
    output.write(line) 
temp.close() 
output.close() 
1

Was Sie davon ab, die Charakter-Frequenz-Zählschleife vor der f.write (XXX) Schleife verhindert?