2010-12-05 3 views
0

J'ai un problème:Python .write() modifier l'ordre

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() 

Comme vous pouvez le voir, j'ai écriture 2x « fonction », comment puis-je changer l'ordre dans writting fichier txt; Je veux écrire d'abord "entrée", puis "f.write (XXX)"

+0

Est-ce une suite à une autre question? Si oui, liez-le. – Heatsink

+0

Précédent question connexe sur ce sujet: http://stackoverflow.com/questions/4361021/python-write-replace-order –

+1

Le code est un peu brouillon, essayez de coller un exemple de travail complet correctement indenté. – tokland

Répondre

0

Vous pouvez utiliser le fichier temporaire pour y écrire d'abord, puis écrire les données d'entrée dans OUTPUT.txt, puis ajouter le fichier temporaire à la sortie .
Si les données ne sont pas énormes (c'est-à-dire qu'elles rentreront dans la mémoire), vous pouvez utiliser StringIO pour cela. 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

Qu'est-ce qui vous empêche de mettre la boucle de caractères fréquence de comptage avant que la boucle de f.write (XXX)?