我正在尝试使用python库子进程运行一些命令。我的某些命令可能会陷入循环并阻塞python脚本。因此,我使用带有超时参数的check_output()来限制命令的时间。当命令花费太多时间时,该函数将引发TimeoutExpired错误。我想做的就是获取该命令在被超时杀死之前能够执行的操作。
除了错误,我尝试了“ sp.TimeoutExpired为e:除外”。我在文档上读到,如果我执行e.output,它应该给我我想要的东西。 “如果check_output()引发此异常,则子进程的输出。否则,无。”但是我在输出中什么都没有。
这是我所做的:
import subprocess as sp
try:
out = sp.check_output('ls', stderr=sp.STDOUT, universal_newlines=True, timeout=1)
except sp.TimeoutExpired as e:
print ('output: '+ e.output)
else:
return out
让我们说我正在使用的文件夹很大,所以1秒钟不足以存放所有文件。因此,将引发TimeoutExpired错误。但是,我想存储脚本至少能够得到的东西。有人有主意吗?
答案 0 :(得分:0)
找到了一个解决方案,以防有人感兴趣将其张贴在这里。
var testRegex = /yolo .+ .+/gu;
let test = `yolo 2 abc
yolo 2 abc`;
test = test.split('\n');
for (let t=0; t < test.length; t++)
{
console.log(test[t], testRegex.exec(test[t]));
testRegex.lastIndex = 0;
}
在Python 3中,run方法允许获取输出。 使用示例中所示的参数,TimeoutExpired将在stdout中的超时之前返回输出。
我希望它可以帮助某人。