Questions tagged «tee»

30
显示Windows命令提示符输出并将其重定向到文件
如何在Windows命令提示符下运行命令行应用程序,并同时显示输出和重定向到文件? 例如,如果我要运行命令dir > test.txt,这会将输出重定向到一个名为的文件,test.txt而不显示结果。 我怎么能写一个命令来显示输出,并在Windows命令输出重定向到文件的提示,类似tee的Unix命令?
371 batch-file  cmd  stdout  tee 

16
如何将sys.stdout复制到日志文件?
编辑:由于似乎没有解决方案,或者我正在做一些没人知道的非标准操作-我将修订我的问题,并问:当python应用正在制作日志时,完成记录的最佳方法是什么?很多系统调用? 我的应用程序有两种模式。在交互模式下,我希望所有输出都转到屏幕以及日志文件中,包括所有系统调用的输出。在守护程序模式下,所有输出进入日志。守护程序模式使用时效果很好os.dup2()。我找不到在不修改每个系统调用的情况下以交互方式将所有输出“发送”到日志的方法。 换句话说,我想要python应用程序生成的任何输出(包括系统调用output)的命令行“ tee”的功能。 澄清: 要重定向所有输出,我可以执行以下操作,并且效果很好: # open our log file so = se = open("%s.log" % self.name, 'w', 0) # re-open stdout without buffering sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) # redirect stdout and stderr to the log file opened above os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno()) 这样做的好处是,不需要其余代码即可进行特殊的打印调用。该代码还运行一些shell命令,因此不必分别处理它们的每个输出也很好。 简而言之,除了复制而不是重定向外,我想做同样的事情。 刚想到时,我认为只需反转即可dup2。为什么不呢?这是我的测试: import os, …
149 python  tee 

5
配管到T型管时强制stdout进行线缓冲
通常,stdout是行缓冲的。换句话说,只要您的printf参数以换行符结尾,就可以期望该行会立即打印出来。使用管道重定向到时,似乎没有这种情况tee。 我有一个C ++程序,a它将始终\n终止的字符串输出到stdout。 当它自己运行(./a)时,所有内容均会按预期正确正确地打印。但是,如果将其通过管道传递到tee(./a | tee output.txt),则在退出之前它不会打印任何内容,这违背了使用的目的tee。 我知道我可以通过fflush(stdout)在C ++程序中的每次打印操作后添加一个来解决此问题。但是,有没有更清洁,更轻松的方法?例如,是否有我可以运行的命令stdout,即使使用管道,该命令也将被强制进行行缓冲?
117 unix  buffer  pipe  stdout  tee 

1
linux tee不能与python一起使用?
我制作了一个python脚本,该脚本使用无限循环与Web服务器通信。我想将每个通讯数据记录到一个文件中,并同时从终端监视它们。所以我像这样使用tee命令。 python client.py | tee logfile 但是,我没有从终端或日志文件中得到任何东西。python脚本运行正常。这是怎么回事 我错过了什么吗? 一些建议,将不胜感激。先感谢您。
102 python  linux  tee 

6
将stdout捕获到变量,但仍将其显示在控制台中
我有一个bash脚本,它调用了几个长时间运行的进程。由于处理原因,我想将这些调用的输出捕获到变量中。但是,由于这些进程是长期运行的进程,因此我希望rsync调用的输出实时显示在控制台中,而不是事后显示。 为此,我找到了一种方法,但是它依赖于将文本输出到/ dev / stderr。我觉得输出到/ dev / stderr并不是一个好方法。 VAR1=$(for i in {1..5}; do sleep 1; echo $i; done | tee /dev/stderr) VAR2=$(rsync -r -t --out-format='%n%L' --delete -s /path/source1/ /path/target1 | tee /dev/stderr) VAR3=$(rsync -r -t --out-format='%n%L' --delete -s /path/source2/ /path/target2 | tee /dev/stderr) 在上面的示例中,我多次调用rsync,并且希望在处理文件时看到它们的名称,但是最后我仍然希望将输出包含在变量中,因为稍后将对其进行解析。 有没有一种“清洁”的方法来实现这一目标? 如果有所作为,我正在使用Ubuntu 12.04,bash 4.2.24。

7
使用子流程时如何在python中复制tee行为?
我正在寻找一种Python解决方案,该解决方案将允许我将命令的输出保存到文件中而不将其从控制台隐藏。 仅供参考:我想问的是tee(作为Unix命令行实用程序),而不是Python intertools模块中的同名函数。 细节 Python解决方案(不调用tee,在Windows下不可用) 我不需要为调用的进程提供任何输入到stdin 我无法控制被调用的程序。我所知道的是,它将向stdout和stderr输出一些内容,并返回退出代码。 在调用外部程序时工作(子过程) 要对工作都stderr和stdout 之所以能够区分stdout和stderr是因为我可能只想在控制台上显示其中之一,或者我可以尝试使用其他颜色输出stderr-这意味着stderr = subprocess.STDOUT它将不起作用。 实时输出(渐进式)-该过程可以运行很长时间,我无法等待它完成。 Python 3兼容代码(重要) 参考文献 到目前为止,我发现了一些不完整的解决方案: http://devlishgenius.blogspot.com/2008/10/logging-in-real-time-in-python.html(mkfifo仅在Unix上有效) http://blog.kagesenshi.org/2008/02/teeing-python-subprocesspopen-output.html(完全无效) 图表http://blog.i18n.ro/wp-content/uploads/2010/06/Drawing_tee_py.png 当前代码(第二次尝试) #!/usr/bin/python from __future__ import print_function import sys, os, time, subprocess, io, threading cmd = "python -E test_output.py" from threading import Thread class StreamThread ( Thread ): def __init__(self, buffer): …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.