在Ruby中,$stdout(以美元符号开头)和STDOUT(在所有大写字母中)之间有什么区别?在进行输出重定向时,应该使用哪个以及为什么?这同样适用于$stderr和STDERR.
编辑:刚刚找到一个相关的问题.
我希望stdout在运行os.system调用后获取变量.
让我们以此行为例:
batcmd="dir"
result = os.system(batcmd)
Run Code Online (Sandbox Code Playgroud)
result将包含错误代码(stderr 0在Windows下或1在某些linux下用于上面的示例).
如何stdout在执行的命令中不使用重定向来获取上述命令?
我试图将命令行程序的所有输出重定向到文件.我正在使用Bash.一些输出被定向到文件,但是一些仍然出现在终端中并且不存储到文件中.
这里描述了类似的症状:
但是我尝试了所提出的解决方案(捕获stderr)但没有成功:
<cmd> <args> > stdout.txt 2> stderr.txt
Run Code Online (Sandbox Code Playgroud)
文件stderr.txt已创建但为空.
可能的线索是命令行程序是与同一台机器上的服务器通信的客户端.可能有些输出来自服务器.
有没有办法捕获终端的所有输出,无论其来源如何?
编辑:
我已经确认缺少的输出是由服务器生成的.在单独的终端中运行命令会在两个终端中产生一些输出,我可以将命令终端的所有输出传输到文件.这引发了有关如何捕获服务器输出的问题,但这是一个不同的问题.
我正在寻找一种Python解决方案,它允许我将命令的输出保存在文件中,而不会将其从控制台中隐藏.
仅供参考:我问的是tee(作为Unix命令行实用程序)而不是Python intertools模块中具有相同名称的函数.
tee,在Windows下不可用)stderr而努力stdoutstderr = subprocess.STDOUT不起作用.以下是我发现的一些不完整的解决方案:
图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):
Thread.__init__(self)
self.buffer = buffer
def run ( self ):
while 1:
line = self.buffer.readline()
print(line,end="") …Run Code Online (Sandbox Code Playgroud) 是否可以在Python中暂时重定向stdout/stderr(即在方法的持续时间内)?
当前解决方案(我最初记得但后来忘记了)的问题在于它们没有重定向 ; 相反,他们只是完整地替换了流.因此,如果一个方法有一个本地副本,一个变量的任何原因(例如,由于流被作为参数传递的东西),它不会工作.
有解决方案吗
以前有很多关于将stdout/stderr重定向到文件的问题.有没有办法将stdout/stderr重定向到字符串?
在PHP中,我正在使用exec()执行命令,如果成功了URL则返回;
$url = exec('report');
Run Code Online (Sandbox Code Playgroud)
但是,如果出现问题,我想检查stderr.我怎么读这个流?我想使用php:// stderr,但我不知道如何使用它.
我正在编写一个备份数据库的脚本.我有以下几行:
mysqldump --user=$dbuser --password=$dbpswd \
--host=$host $mysqldb | gzip > $filename
Run Code Online (Sandbox Code Playgroud)
我想将stderr分配给一个变量,这样它就会向我发送一封电子邮件,让我知道如果出现问题会发生什么.我找到了将stderr重定向到stdout的解决方案,但我不能这样做,因为stdout已经被发送(通过gzip)到一个文件.如何在变量$ result中单独存储stderr?
使用googletest框架时是否可以捕获stdout和stderr ?
例如,我想调用一个将错误写入控制台(stderr)的函数.现在,在测试中调用函数时,我想断言那里没有输出.
或者,也许我想测试错误行为,并希望在我(故意)产生错误时断言某个字符串被打印.
stderr ×10
stdout ×8
python ×3
bash ×2
c++ ×2
redirect ×2
c ×1
exec ×1
googletest ×1
linux ×1
os.system ×1
php ×1
printing ×1
python-2.7 ×1
r ×1
ruby ×1
scripting ×1
subprocess ×1
tee ×1
unit-testing ×1