2017-10-28 2272 views
-1

在Python中,下面就让我们一起写stdout在python中实现fprintf的简单方法是什么?

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

不过,我想成为灵活处理哪个流,我们打印到。我想将流作为参数传递给一个函数,就像您在调用C派生语言中的任何一个时调用fprintf一样。在上面的代码片段中,stdout被硬编码到写入语句中。但是,我们希望灵活处理我们写入的流。我们可能需要stderr或其他流,而不是stdout

+2

'高清东西(流):stream.write( '嗒嗒%d' %5);某些东西(sys.stderr)'会工作得很好;你能澄清你到底想达到什么吗? – jonrsharpe

+1

为什么你需要通过'sys.stderr'或'sys.stdout'如果两者都可以从任何地方访问? – alfasin

回答

0

下面将做:

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

下面是一个呼叫的例子:

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

控制台输出:

bagel 6 donut 3.145900 
0

通常,print(Python)的是一个替换对于printf(C)及其衍生物(fprintf,println ...)。下面是上面的代码将如何看起来像在Python:

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) 
相关问题