2016-12-27 68 views
0

当我使用:织物运行()输出污垢

out = run("ls") 

我想在文件中的“出”名单。但是,我也收到垃圾。如何只获取shell命令?

$ fab -p 111 -H server func 
[server] Executing task 'func' 
[server] run: ls 
[server] out: 
[server] out: 
[server] out: MQSI 9.0.0.3 
[server] out: /opt/IBM/mqsi/9.0.0.3 
[server] out: 
[server] out: /var/mqsi/odbc/odbc64.ini 
[server] out: file1 file2 file3 
[server] out: 

MQSI 9.0.0.3 
/opt/IBM/mqsi/9.0.0.3 

/var/mqsi/odbc/odbc64.ini 
file1 file2 file3 

所以在out我得到的所有文字从MQSIfile3。但我只需要file1 file2 file3

可能它不是织物故障。也许与服务器外壳有关。

我非常尝试使用不同的面料隐藏,但没有找到答案。

+0

你的意思是“让垃圾”? – joeb

+0

@joeb我修改了答案。垃圾桶我的意思是 MQSI 9.0.0.3 /opt/IBM/mqsi/9.0.0.3 /var/mqsi/odbc/odbc64.ini – igor

+0

现在我只能看到一种避免这种问题的方法。使用'out = run(“echo'start'&& ls”)out = out [out.index('start')+ 1:]' – igor

回答

0

如果我理解正确,通过“垃圾”指的是ls命令输出中出现的“\ t”,“\ r”和“\ n”字符。一个例子,我刚刚生成这个样子的:

>>>> out = run('ls') 
>>>> print(out) 
'nginx\t\t\t\tnginx.bak.20151206-2209.tar.gz\tnginx.bak.20151206-2258.tar.gz\tphp-fpm.conf.save\r\nnginx.bak.20151206-2047.tar.gz\r\nnginx.bak.20151206-2153.tar.gz\tnginx.bak.20151206-2226.tar.gz\tphp-fpm.conf\t\t\tsupervisord.conf\r\nnginx.bak.20151206-2206.tar.gz\tnginx.bak.20151206-2255.tar.gz\tphp-fpm.conf.default\t\tvarnish' 

为了把它转换成一个列表,你可以.split()它,如:

>>> out.split() 
['nginx', 'nginx.bak.20151206-2209.tar.gz', 'nginx.bak.20151206-2258.tar.gz', 'php-fpm.conf.save', 'nginx.bak.20151206-2047.tar.gz', 'nginx.bak.20151206-2153.tar.gz', 'nginx.bak.20151206-2226.tar.gz', 'php-fpm.conf', 'supervisord.conf', 'nginx.bak.20151206-2206.tar.gz', 'nginx.bak.20151206-2255.tar.gz', 'php-fpm.conf.default', 'varnish'] 
+0

我不需要shell中的文本,除了'ls'之外。在我的情况下,首先shell返回一些额外的信息。 – igor