相当于java的OutputStream的python?

是否有与Java的OutputStream或PrintWriter相当的Python等价物?

我希望能够有一个表示stdout / sterr,或文件或其他东西(管道或套接字或虚拟水槽)的流,并抽象出它是什么类型的东西,所以我可以只是发送输出到它。

我怎样才能做到这一点?


“抽象出它是什么类型”在Python中自动发生 - 它被称为“鸭子打字”。 只需将任何类似文件的对象传递给函数,并使用类似文件的对象的接口。

FWIW,标准输入/输出/错误流由sys模块中的stdinstdoutstderr表示。 要获取读取和写入字符串的文件类对象,请使用StringIO模块。


看看io和StringIO模块。


你只需要一个实现文件,管道,流等等方法的对象。 例如,我有时使用这个类,当我想分离我的Python程序,我想重定向sys.stderr / sys.stdout:

class Log(object):
    """used for logging for background process"""
    def __init__(self, f):
            self.f = f
    def write(self, s):
            self.f.write(s)
            self.f.flush()
sys.stdout = sys.stderr = Log(open('/tmp/daemonlog', 'a+'))
链接地址: http://www.djcxy.com/p/48657.html

上一篇: python equivalent of java OutputStream?

下一篇: Good practices for uploading images through a restful API