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
。否则,您将需要编写代码来分别处理这两种情况,因为您无法像打开文件一样打开标准输出。或者,您可以写入一个文件,然后将文件内容打印到标准输出,然后删除该文件。@文盲编码器>我在脚本中有几个地方使用了此函数,因此在使用标准输出时,重写它或编写它的替代项就不那么方便了。这个脚本有几种操作模式。@文盲程序员,因为这是一个示例,我可能想将脚本输出发送到另一个程序。