在python中实现fprintf的简单方法是什么?

时间:2017-10-28 16:18:34

标签: python python-3.x dictionary file-io ascii

在python中,以下内容将让我们写信给stdout

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

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

3 个答案:

答案 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)及其衍生物(fprintfprintln ...)的替代品。以下是上述代码段在Python中的样子:

import sys

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

或者:

print("blah %d" % 5)