在python中,以下内容将让我们写信给stdout
:
import sys
sys.stdout.write("blah %d" % 5)
但是,我想要灵活处理我们要打印的流。我想将流作为参数传递给函数,就像在任何fprintf
派生语言中调用C
一样。在上面的源代码片段中,stdout
被硬编码到write语句中。但是,我们想要灵活处理我们写入的流。我们可能需要stderr
或其他一些流而不是stdout
。
答案 0 :(得分:2)
你说
我想将流作为参数传递给函数
但这并没有给你任何额外的灵活性。如果您有一个some_stream
变量引用要写入的流,则可以执行
some_stream.write("blah %d" % 5)
所以你不能通过使流成为函数参数来获得任何东西。也就是说,print
函数采用file
参数来指定要写入的流:
print("blah %d" % 5, end='', file=some_stream)
答案 1 :(得分: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
答案 2 :(得分:0)
通常,print
(Python)是printf
(C)及其衍生物(fprintf
,println
...)的替代品。以下是上述代码段在Python中的样子:
import sys
print("blah %d" % 5, file=sys.stdout)
或者:
print("blah %d" % 5)