针对在python中,我可以将print函数的输出重定向到stderr吗?和pythonprint重定向输出到文件这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展bash–如何将错误输出重定
针对在python中,我可以将print函数的输出重定向到stderr吗?和python print重定向输出到文件这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展bash – 如何将错误输出重定向到stdout和stderr?、bash – 将文件的输出重定向到stdout、bash – 将文件输出的二进制输出重定向到stdout、bash – 我可以将stdin直接重定向到文件吗?等相关知识,希望可以帮助到你。
本文目录一览:- 在python中,我可以将print函数的输出重定向到stderr吗?(python print重定向输出到文件)
- bash – 如何将错误输出重定向到stdout和stderr?
- bash – 将文件的输出重定向到stdout
- bash – 将文件输出的二进制输出重定向到stdout
- bash – 我可以将stdin直接重定向到文件吗?
在python中,我可以将print函数的输出重定向到stderr吗?(python print重定向输出到文件)
我的程序中有很多print
功能(python2.7
)。有什么办法可以添加几行,然后将所有输出重定向到stderr
?我想要的是python代码,而不是linux管道。
例如,我的程序是这样的:
print ''hello world''
我想添加一些代码,例如:
redirect_output_to_stderr()print ''hello world''
然后,所有输出都可以重定向到stderr
。
我知道print >> sys.stderr, ''hello world''
可以实现我的目标,但是有什么方法可以防止修改现有代码?
答案1
小编典典使用您的方法执行此操作:
import syssys.stdout = sys.stderr
bash – 如何将错误输出重定向到stdout和stderr?
我发现this question询问如何将stdout stderr指向一个文件并仍在终端上获得stderr;它很接近,但我不想将stdout重定向到一个文件:程序的输出将被其他脚本使用,所以我希望它保留在stdout上(对于stderr也是如此).所以,总结一下:
>脚本在fd 1中生成输出,在fd 2中生成错误.
>我希望调用程序重新排列事物,以便输出错误出现在fd 1中,错误出现在fd 2中.
>此外,错误应与输出交错(尽可能与自己的缓冲允许),最后不保存和添加.
尽职调查:使用2>& 1捕获stderr非常容易.通过T形管道保存和查看标准输出很容易.我也知道如何将stdout转移到文件并通过管道直接stderr:命令2>& 1 1> fileA |发球文件B.但是我如何复制stderr并将stdout放回fd 1?
{ echo out; echo err >&2; }
以下代码演示了如何将stdout和stderr发送到管道中的下一步,同时还将stderr发送到终端:
${ echo out; echo err >&2; } 2> >(tee /dev/stderr) | cat >f err $cat f out err
这个怎么运作
> 2>
这会将stderr重定向到后面的(伪)文件.
>>(tee / dev / stderr)
这是进程替换,它充当从stderr接收输入的伪文件.它接收的任何输入都被发送到tee命令,该命令将它发送到stderr和stdout.
bash – 将文件的输出重定向到stdout
myprog -o /dev/stdout input_file
但它说:
/dev/ not writable
我发现this question与我的相似,但是如果没有额外的魔法,/ dev / stdout显然不会起作用.
问:如何将输出从文件重定向到stdout?
附:没有任何专用软件的常规方法是优选的.
解决方法
在您的情况下,以下可以解决您的问题:
myprog -o - input_file
bash – 将文件输出的二进制输出重定向到stdout
>构建第一个参数,无需创建临时文件
>使二进制写入stdout而不是输出文件(第二个参数)
我用<(...)解决了第一个问题但不确定第二个参数. 我写了一个跟随脚本,看起来像预期的一样:
FILE1=$1 FILE2=$2 # checking that the files exist and other stuff mkfifo myfifo ThatBinary <( ... ) myfifo & cat myfifo
二进制文件的第一个参数是组合的Bash命令,它构建了第一个“文件”.第二个参数是二进制文件必须写入的命名管道.自写入fifo块以来,所有这些都被发送到后台.最后,我根据需要将命名管道的输出打印到stdout.
是否有可能改进这个命令?任何隐藏的警告?我正在处理非常大的文件(成千上万的文本行),并且很想确定我什么都不想错.
解决方法
ThatBinary <(...) /dev/stdout
bash – 我可以将stdin直接重定向到文件吗?
cat >some_file
解决方法
> file while IFS= read -r line do printf "%s\n" "$line" done < /dev/stdin >> file
要读取表单stdin并在运行时追加到该文件,>文件在读取开始之前截断文件的内容.
包括Leon’s comment中的这个建议,用于执行此操作的单行选项,
while IFS= read -r line; do echo "$line"; done > file
关于在python中,我可以将print函数的输出重定向到stderr吗?和python print重定向输出到文件的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于bash – 如何将错误输出重定向到stdout和stderr?、bash – 将文件的输出重定向到stdout、bash – 将文件输出的二进制输出重定向到stdout、bash – 我可以将stdin直接重定向到文件吗?的相关信息,请在本站寻找。
本文标签: