2017-10-28 10 views
-1

, 다음은 우리가 stdout 쓸 수있게된다 :파이썬에서 fprintf를 구현하는 쉬운 방법은 무엇입니까? 파이썬에서

import sys 
sys.stdout.write("blah %d" % 5) 

그러나, 나는 우리가 인쇄되는 스트림에 대해 유연하게 할 수 있습니다. C 파생 된 언어 중 하나에서 fprintf을 호출 할 때와 같이 스트림을 함수로 인수로 전달하려고합니다. 위의 소스 코드에서 stdout은 쓰기 명령문에 하드 코딩되어 있습니다. 그러나 우리는 어떤 스트림을 쓸 것인지 유연하게 원합니다. stderr 또는 stdout 대신 다른 스트림이 필요할 수 있습니다.

+2

'DEF 무언가 (스트림) stream.write ('ㅋ % D '5 %); something (sys.stderr)'는 정상적으로 작동합니다. 성취하고자하는 바를 정확히 알 수 있습니까? – jonrsharpe

+1

둘 다 어디에서나 접근 할 수 있다면'sys.stderr' 또는'sys.stdout'을 전달해야하는 이유는 무엇입니까? – alfasin

답변

0

다음은 수행합니다

fprintf(sys.stdout, "bagel %d donut %f", 6, 3.1459) 

콘솔 출력 : 여기에

import sys 
def fprintf(stream, format_spec, *args): 
    stream.write(format_spec % args) 

통화의 예입니다

bagel 6 donut 3.145900 
0

일반적으로 print (파이썬은) 대체합니다 printf (C) 및 그 유도체 (fprintf, println ...). 여기에 위의 코드는 파이썬과 같을 것이다 방법은 다음과 같습니다

import sys 

print("blah %d" % 5, file=sys.stdout) 

또는 :

print("blah %d" % 5) 
1

당신은

내가 함수에 인수로 스트림을 전달하려는 말을

하지만 추가 유연성이 부여되지는 않습니다. 당신은 당신이 쓰고 싶은 스트림에 참조하는 some_stream 변수가있는 경우, 당신은 이미

some_stream.write("blah %d" % 5) 

그래서 당신은 스트림 함수 인수함으로써 어떤 이득도 얻을하지 않습니다 할 수 있습니다. 즉, 상기의 print 함수 작성할지 스트림 file 지정하는 인수를 행 :

print("blah %d" % 5, end='', file=some_stream)