python 相当于 java OutputStream?
是否有与java的等效的Python/伪等效OutputStream 或 PrintWriter ?
我希望能够有一个句柄,它代表一个像 stdout/sterr 这样的流,或者一个文件,或者其他东西(管道、套接字或虚拟接收器),并抽象出它是什么类型的东西,这样我就可以只需将输出发送给它即可。
我该怎么做?
Is there a Python equivalent / pseudo-equivalent to java's OutputStream or PrintWriter?
I want to be able to have a handle that represents either a stream like stdout/sterr, or a file, or something else (a pipe or a socket or a dummy sink) and abstract away what kind of thing it is, so I can just send output to it.
How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Python 中,“抽象出它是什么类型”会自动发生——这被称为“鸭子类型”。只需将任何类文件对象传递给该函数,并让它使用类文件对象的接口即可。
FWIW,标准输入/输出/错误流由
sys
模块中的stdin
、stdout
和stderr
表示。要获取读取和写入字符串的类文件对象,请使用 StringIO 模块。"Abstracting away what type it is" happens automatically in Python - it's called 'duck typing'. Just pass any file-like object to the function, and have it use the interface of file-like objects.
FWIW, the standard input/output/error streams are represented by
stdin
,stdout
andstderr
in thesys
module. To get file-like objects that read and write strings, use theStringIO
module.看一下 io 和 StringIO 模块。
Take a look at the io and StringIO modules.
你只需要一个对象来实现文件、管道、流等也实现的方法。例如,当我想分离我的 python 程序并且想重定向 sys.stderr/sys.stdout 时,我有时会使用这个类:
you just need an object that implements the methods that files, pipes, streams, etc... also implement. for instance, i use this class sometimes when i want to detach my python program and i want to redirect sys.stderr/sys.stdout: