편집 할 수없는 기능이있어서 콘솔에 결과를 인쇄합니다. 그 함수를 호출하는 것이 가능하지만 함수의 내부 코드를 변경하지 않고 콘솔 출력을 파일로 파이프합니까?특정 기능의 파이프 콘솔 출력 - 파이썬
예를 들어, 내가 가진 : 나는 somefunc()
을 편집 할 수 있기 때문에 내가 logger
를 사용할 수없는
def somefunc(x):
print "Hello World", x**x
def pipeout(func, outfilename)
with open('outfilename', 'w') as fout:
# somehow pipes out the output...
.
나는 @A श 위니 च haudhary의 솔루션을 시도하지만 난이 파일은 첫 번째 OUTPUTFILE 이외의 비어 있었다 수없고 또한 다시하고 다시 :
def redirect_output(file_name):
def decorator(func):
def wrapper(*args):
with open(file_name, 'w') as f:
original_stdout = sys.stdout
sys.stdout = f
func(*args)
sys.stdout = original_stdout
return wrapper
return decorator
def somefunc(x):
print x*x
xs = [1,2,3,4]
for i in xs:
outputfilename = 'results/'+str(i)
somefunc = redirect_output(outputfilename)(somefunc)
somefunc(i)
왜이 기능을 편집 할 수 없습니다. 이것은 파이썬이며 모든 기능은 일반 텍스트 파일에 있습니다. – Daniel
라이브러리 함수 일 수 있으므로 배포 될 프로젝트에서 사용해야합니다. 물론 편집 할 수 있지만 때로는하지 말아야합니다. –
그래, 논리적으로 나는 함수를 편집 할 수 있지만 나와 다른 개발자들 사이에 모든 종류의 복잡성을 야기 할 것이고, 병합 충돌을 피하고 스크럼 미팅과 싸우는 것이 가장 좋다.) – alvas