2014-11-07 2 views
0

파이썬 콘솔에 주석을 출력하고 텍스트 파일에 저장하는 동시에 재귀 적으로 실행해야합니다. 코드를 찾고 수정했습니다 :콘솔 및 텍스트 파일 동시에 인쇄 python

import sys 

def write(input_text): 
    print("Coming through stdout") 
    # stdout is saved 
    save_stdout = sys.stdout 

    fh = open(path,"w") 
    sys.stdout = fh 
    print(input_text) 

    # return to normal: 
    sys.stdout = save_stdout 
    fh.close() 
def testing(): 
    write('go') 

이 명령을 다시 사용하고 마지막으로받은 인쇄 데이터 만 저장했습니다. 어떤 단서? 감사합니다.

+0

난 당신이 다른 오픈 위치 : 내가 나를 위해 좋은 보이는 파이썬 메일 링리스트에 이걸 발견 : https://mail.python.org/pipermail/python-list/2007-May/438106.html – schneck

+1

'logging' 모듈을 사용해보십시오. 로거에'StreamHandler'와'FileHandler'를 추가하면됩니다. (https://docs.python.org/2/howto/logging-cookbook.html#using-logging-in-multiple-modules도 참조하십시오) – moooeeeep

답변

0

파일의 내용을 지우는 기능인 open에 'w'모드를 전달합니다. 파일에 추가하려면 'a'모드를 사용해야합니다.

현재 두 개의 처리기가있는 logging 모듈을 사용해야합니다. 하나는 표준 출력으로, 다른 하나는 파일로 쓰기입니다. 파이썬 문서에서 logging handlers을 참조하십시오.

0

이되고 필요로 ("경로"가정은 이미 정의되어 있습니다) :

def print_twice(*args,**kwargs): 
    print(*args,**kwargs) 
    with open(path,"a") as f: # appends to file and closes it when finished 
     print(file=f,*args,**kwargs) 

정확히 같은 일 인쇄하고 파일에 기록됩니다. 로깅 모듈은이 간단한 작업을 위해 과도하게 사용됩니다.

파이썬에서 파일에 데이터를 쓰는 것이 코드 에서처럼 stdout을 사용하는 것이 실제로 필요하다고 생각하지 않는다고 말해주세요. 그건 말도 안돼.