2013-02-09 52 views
0

嘗試處理文本文件,並希望看到輸出處於空閒狀態以及重定向到文本文件。由於文本格式,我需要保持語句在打印功能(end ='')。我正在尋找一種在打印功能中同時使用「end =''」和「file = output_file」的方法。寫入文件並顯示空閒結果

import re 
input_file = open ('E:\input.txt','r') 
output_file = open ('E:\output.txt','w') 

for line in input_file: 
     if re.match('ab|cd', line): 
       print ('line with ab or cd: ', end = '',file=output_file) 
       print (line, end = '',file=output_file) 
       print (' --------', file=output_file) 
       print (' --------',file=output_file) 
       print ('!',file=output_file) 
     else: 
       print (line,file=output_file) 
+0

我+1塞巴斯蒂安的答案。請注意,它確實包含但不強調以'output_file.write('some string \ nnext line')'形式替換'print'。不要忘記'.close()'或者使用'with''構造。 – pepr 2013-02-09 16:54:47

回答

3

使用單個print()寫幾個地方,你可以定義一個類文件對象:

class TeeFile(object): 
    def __init__(self, *files): 
     self.files = files 
    def write(self, data): 
     for f in self.files: 
      f.write(data) 
    def flush(self): 
     for f in self.files: 
      f.flush() 

例子:

import sys 

file = TeeFile(sys.stderr, output_file) 
print("abc", end="", file=file) 
file.flush()