是否可以输出stdout到文件,但忽略stderr?
我有一个 Python 脚本,用于sys.stderr.write(error)将错误输出到stderr. 对于这个特定的脚本,我想忽略这些。这怎么可能?
这是 crontab 中的当前条目:
* * * * * /Users/me/bin/scrape-headlines /Users/me/proxies.txt >> /Users/me/headlines.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
scrape-headlines是一个调用Python脚本的bash脚本。
在我的程序中,在这种情况下写入 stderr 时有时会冻结:
/proc/self/exe)fprintf写入来stderr工作,在某些时候我的程序会完全锁定。调试器告诉我它的 fprintf。这里发生了什么?我已经尝试过的是,一旦没有人再监听管道,就可以防止程序崩溃SIG_IGN。但现在我陷入了困境(无论有没有SIGPIPE冻结,冻结的行为都是一样的)。SIG_IGN
任何帮助表示赞赏。
我尝试过docker container rm container-name > /dev/null,但这仍然打印Error: No such container: container-name。我正在尝试在 bash 脚本中消除此错误。
我正在节点应用程序中为子进程设置错误处理,我想知道这两个选项:
childProcess.on('error', err => {
// omitted
});
// do we need both this and the preceding handler?
childProcess.stderr.on('data', data => {
// omitted
});
Run Code Online (Sandbox Code Playgroud)
有什么不同?两者都需要吗?
我试图通过 PowerShell 运行命令并捕获其 stdout 和 stderr而不将它们打印在屏幕上(命令非常嘈杂并污染控制台)。
我想捕获变量中的 stdout 和 stderr,然后在找到特定字符串时抛出异常。
我的逻辑似乎正常工作,我可以在我期望的时候使 cmdlet 失败/通过,但是输出与我的期望不匹配,而不是返回我指定的错误消息,我得到的是我认为是 stderr 的内容命令代替?
(为了便于阅读而进行了简化)
第一个 cmdlet:
function Test-Validation
{
[CmdletBinding()]
param(
[Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 0)]
[Array]
$ValidExitCodes = @(0),
[Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true, Position = 1)]
[bool]
$FailOnWarning = $true
)
$Validation = . pdk validate 2>&1
if ($LASTEXITCODE -notin $ValidExitCodes)
{
throw "Module validation has failed. Exit code: $($LASTEXITCODE)."
}
$Warnings = $Validation -match 'pdk \(WARNING\)' …Run Code Online (Sandbox Code Playgroud) 这是我的 NodeJs 片段:
const {execSync} = require('child_process');
testoutput = execSync('make test');
Run Code Online (Sandbox Code Playgroud)
如果 make 进程完全退出,我将从execSync 进程获取stdout作为testoutput变量的输出。但是,如果make 测试过程遇到stderr错误,那么我会在 NodeJs 中收到错误。
如果 make 进程不退出,如何将stderr消息存储到输出变量testoutput;如果进程以stdout 输出正常退出,则如何将stdout存储到变量testoutput中。
我正在尝试编写一个程序,将其提示打印为标准错误,并将其输出打印为标准输出,以便以后可以操纵输出。
我对python有点陌生,但是getpass()的文档显示我应该能够选择一个流:
getpass.getpass([prompt[, stream]])
Run Code Online (Sandbox Code Playgroud)
我已经尝试过各种参数来获取getpass,但似乎无法在stderr中进行提示。任何帮助,将不胜感激,谢谢。
>>> password = getpass.getpass("Password", sys.stderr)
TypeError: unix_getpass() takes at most 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud) 我几天来一直在使用PySide程序遇到困难.我不认为这个问题难以置信,因为那里有答案.我遇到的问题似乎都不适合我.
我希望'监听'文件对象stdout和stderr,并在我的PySide程序运行时将内容输出到QText Edit小部件.现在,我已经意识到这个问题(或者类似的东西)之前已经被问过了,但就像我说的那样,由于某种原因无法让它为我工作,而其他大多数解决方案都基于我能做到的那个问题.工作,所以对我来说这几天非常令人沮丧.这个解决方案(OutLog)包含在我下面的代码片段中,以防你们其中一个人可以看到我的拙劣实现.
要记住的事情:
1我在Windows 7上做这个(duuuh,da,da,duh)
2我正在使用eclipse并在IDE中运行它(duh,da,da,duh,DUUUUH:如果建议适用于命令行或IDE,那将非常方便)
3我真的只想在程序运行时将stdout和stderr的输出复制到小部件.对于这种情况,逐行发生将是一个梦想,但即使它在一个循环结束时出现作为一个块或其他东西,这将是晶圆厂.
4哦,关于OutLog,有人可以告诉我,如果在init中将self.out设置为'None' ,这个类实际上可以工作吗?我的意思是,self.out 总是一个NoneType对象,对吧???
任何帮助将不胜感激,即使它只是指向我可以找到更多信息的地方.我一直在努力建立自己的解决方案(我有点像一个虐待狂),但我发现很难找到关于这些对象如何工作的相关信息.
无论如何,抱怨过来.这是我的代码:
#!/usr/bin/env python
import sys
import logging
import system_utilities
log = logging.getLogger()
log.setLevel("DEBUG")
log.addHandler(system_utilities.SystemLogger())
import matplotlib
matplotlib.use("Qt4Agg")
matplotlib.rcParams["backend.qt4"] = "PySide"
import subprocess
import plot_widget
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from PySide import QtCore, QtGui
class MainWindow(QtGui.QMainWindow):
"""This is the main window class and displays the primary UI when launched.
Inherits from QMainWindow.
"""
def __init__(self):
"""Init function.
"""
super(MainWindow, self).__init__() …Run Code Online (Sandbox Code Playgroud) 在这个例子中,我想 write在控制台(std.out)中try block; 但是当抛出异常时except block,我想编写std.err重定向到日志的异常内容file.
我可以file打开一个except块然后write打开它.但是需要为每个try-catch块完成,所以如果有re-directing这些异常的替代方法std.err并记录std.error.
>>> try:
... print "hello world"
... 1/0
... except ZeroDivisionError as e:
... print "exception"
...
hello world
exception
Run Code Online (Sandbox Code Playgroud) 例如:
gcloud compute disks create --size=10GB my-data-disk
Run Code Online (Sandbox Code Playgroud)
会印两件事:
警告:
WARNING: You have selected a disk size of under [200GB]. This may result in poor I/O performance. For more information, see: https://developers.google.com/compute/docs/disks/persistent-disks#pdperformance.
Run Code Online (Sandbox Code Playgroud)
这可以通过以下方式消除 --verbosity error
状态:
Created [https://www.googleapis.com/compute/v1/projects/sigma-project-12345/zones/europe-west1-c/disks/my-data-disk].
NAME ZONE SIZE_GB TYPE STATUS
my-data-disk europe-west1-c 10 pd-standard READY
Run Code Online (Sandbox Code Playgroud)
这个我不知道如何禁用,然后重定向stderr,当然我不想要因为我仍然要看是否发生错误.
该-q论点不会删除它.
command-line-interface stderr command-line-arguments gcloud gcloud-cli