使用sh模块时,有什么方法可以防止输出被截断吗?

时间:2018-10-29 16:37:54

标签: python shell

sh模块可以说是对subprocess的改进,但是我不喜欢它的一个默认值是自动截断发送到stderr或stdout的输出。

例如:

RAN: /usr/bin/ssh -o StrictHostKeyChecking=no some-host sudo docker run --volume=/tmp/sdc/mysql-data:/var/lib/mysql some-image

  STDOUT:
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
MySQL init process in progress...
My... (304 more, please see e.stdout)

  STDERR:
Unable to find image 'some-image' locally
latest: Pulling from some-registry
802b00ed6f79: Pulling fs layer
30f19a05b898: Pulling fs layer
3e43303be5e9: Pulling fs layer
94b281824ae2: Pulling fs layer
51eb397095b1: Pulling fs layer
54567da6fdf0: Pulling fs layer
bc57ddb85cce: Pulling fs layer
d6cd3c7302aa: Pulling fs layer
d8263dad8dbb: Pulling fs layer
780f2f86056d: Pulling fs layer
8e0761cb58cd: Pulling fs layer
7588cfc269e5: Pulling fs layer
05696864e217: Pulling fs layer
268e30161d5b: Pulling fs layer
65b5c3541a53: Pulling fs layer
a6c30a42bc7a: Pulling fs layer
94b281824ae2: Waiting
51eb397095b1: Waiting
54567da6fdf0: Waiting
bc57ddb85cce: Waiti... (1903 more, please see e.stderr)

我知道我可以将sh.ssh(...)包装在try ... except中,但是使用sh模块的目的是方便编写更少的样板代码(subprocess要求)。截断输出是一种不良的默认行为,我想在全局范围内禁用该行为,但是快速搜索文档/软件包源没有得到结果。

最终,我会花时间进行更彻底的搜索并找到它,但是,如果您已经进行了搜索并希望共享后代的结果,这是您的机会。

0 个答案:

没有答案