python-3.x - 如何像python中的文件对象一样写入标准输出
问题描述
stdin
处理使用和的 python 脚本stdout
。默认行为是脚本将写入文件,所以我有这个函数被调用来处理写入文件:
def run_loop(data,name):
with open(name, 'w') as fo:
fo.write("webstat output "+t) # t is a date str created in global scope
for x in data:
fo.write(processer(x))
fo.write('\n')
我在脚本中有几个地方使用了这个函数,所以重写它或写一个替换它来使用标准输出会不太方便。当我尝试将 stdout 与 open 一起使用时,sys.stdout 说它是一个 type _io.TextIOWrapper
。拨打电话时出现错误,run_loop(same_data,sys.stdout)
我收到此错误:
TypeError: expected str, bytes or os.PathLike object, not _io.TextIOWrapper
我想知道是否可以使用open()
with stdout
?我想既然stdout
是文件 io,我应该能够将其作为文件写入。理想情况下,会有一种方法可以更改_io.TextIOWrapper
为可以使用的对象open()
,但我一直在研究其中的方法类型,sys.stdout
它们似乎没有提供这种功能。我不确定为什么无法将fo
对象open()
设置为stdout
?
我想要实现的行为是
cat input-data.txt | myscript.py > out.txt
我已经能够让这stdin
部分工作,但我仍然不知道如何stdout
用open()
.
假设我可以放弃open()
,如果我可以保持与我调用此函数的其他地方的兼容性:data
作为列表,name
通常是应保存输出的文件名字符串。
Python 3.7.5rc1
解决方案
推荐阅读
- c# - 出现错误:System.InvalidOperationException:用户未处理
- microsoft-graph-api - MS Graph getSchedule - 响应
- java - String.chars() - 为什么在这里使用“i - '0'”?
- django - 如何在自定义视图中使用 Django 默认密码重置机制?
- django - 如何使用 CreateView 类实现自定义表单
- java - 为什么当我单击计算器应用程序中的算术功能按钮时,我的应用程序会停止?
- javascript - TypeError: Cannot read property 'focus' of undefined in ReactJS
- mule - 在 studio 7 中部署 mule 应用程序时出现错误
- c++ - Better event handling mechanism?
- flutter - Unable to use spread operator in Flutter