Python 3.x 如何像python中的文件对象一样写入标准输出

Python 3.x 如何像python中的文件对象一样写入标准输出,python-3.x,stdout,Python 3.x,Stdout,使用stdin和stdout的python脚本。默认值 行为是脚本将写入文件,所以我有这个函数 调用以处理写入文件的操作: def run_循环(数据、名称): 以open(名称“w”)作为fo: fo.write(“webstat输出”+t)#t是在全局范围内创建的日期str 对于数据中的x: fo.write(处理器(x)) fo.write(“\n”) 我在脚本中有几个地方使用这个函数,所以 要重写它或写一个取代基就不那么方便了 与stdout一起工作。当我尝试使用带open的stdou

使用
stdin
stdout
的python脚本。默认值 行为是脚本将写入文件,所以我有这个函数 调用以处理写入文件的操作:

def run_循环(数据、名称):
以open(名称“w”)作为fo:
fo.write(“webstat输出”+t)#t是在全局范围内创建的日期str
对于数据中的x:
fo.write(处理器(x))
fo.write(“\n”)
我在脚本中有几个地方使用这个函数,所以 要重写它或写一个取代基就不那么方便了 与stdout一起工作。当我尝试使用带open的stdout时, sys.stdout说它是一种类型
\u io.TextIOWrapper
。我遇到一个错误时 绑定到调用
run\u循环(相同的数据,sys.stdout)
我得到以下错误:

TypeError: expected str, bytes or os.PathLike object, not _io.TextIOWrapper
我想知道是否有办法将
open()
stdout
一起使用?我会的 我猜既然
stdout
是文件io,我应该可以像 档案。理想情况下,有一种方法可以将
\u io.TextIOWrapper
更改为 一个
open()
可以使用的对象,但我一直在研究
sys.stdout
中的方法,它们似乎不提供此功能 设施。我不确定为什么
open()
中的
fo
对象无法打开 设置为标准输出

我想要达到的行为是

cat input-data.txt | myscript.py>out.txt
我已经能够让
stdin
部分正常工作了,但我仍然处于一个困难的阶段 无法使用
open()
写入
stdout

假设我可以放弃
open()
,如果我可以保持与 我调用此函数的其他地方:
data
是一个列表和
name
通常是保存输出的文件名字符串



Python 3.7.5rc1

如果您想要的行为是
myscript.py>out.txt
为什么要写入文件?把所有的东西都打印出来。如果要始终写入文件,请将文件名作为命令行参数,以便
myscript.py out.txt
。否则,您将需要编写代码来分别处理这两种情况,因为您无法像打开文件一样打开标准输出。或者,您可以写入一个文件,然后将文件内容打印到标准输出,然后删除该文件。@文盲编码器>我在脚本中有几个地方使用了此函数,因此在使用标准输出时,重写它或编写它的替代项就不那么方便了。这个脚本有几种操作模式。@文盲程序员,因为这是一个示例,我可能想将脚本输出发送到另一个程序。