繁体   English   中英

重定向python脚本标准输出+时间到文件并使用参数进行屏幕显示

[英]Redirect python script stdout + time to file AND to screen with arguments

我在结合python,时间和tee时遇到一些问题。

我有一个脚本script.sh ,其中包含以下行:

{ time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1 | tee log.log

但是,当我这样做时:

source script.sh

终端只是挂起。

有趣的是,当我将该行替换为:

{ time python extractPassRate.py ; } 2>&1 | tee log.log

(也就是说,如果我删除了python脚本参数)或

{ time python extractPassRate.py -i DataPaths/background.list -o PassRates/background.csv ; } 2>&1

(不保存到log.log)

该脚本有效。

第一行有问题吗?

到处搜寻,我在这里找到了解决方案,作者是Matthew Alpert: 如何将输出重定向到文件和stdout

看来这是由于缓冲问题。

马修的回答是:

程序取消缓冲(expect包的一部分)将解决缓冲问题。 这将导致stdout和stderr立即写入屏幕并归档,并在组合并重定向到tee时保持同步。 例如:

$ unbuffer program [arguments ...] 2>&1 | 开球

那对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM