2016-12-27 76 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