Python .write() 修改顺序

0 投票
2 回答
712 浏览
提问于 2025-04-16 08:05

我遇到了一些问题:

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

如你所见,我在代码中写了两次“function”,我想知道怎么改变在文本文件中的写入顺序;我想先写“input”,然后再写“f.write(XXX)”

2 个回答

1

是什么让你不能把计算字符频率的循环放在 f.write(XXX) 循环之前呢?

0

你可以先用一个临时文件来写入数据,然后再把'input'的数据写入OUTPUT.txt,最后把临时文件的内容追加到输出文件中。
如果数据量不大(也就是说可以放进内存里),你可以使用StringIO来处理。在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()

撰写回答