2016-07-06 66 views
-2

我对Python很新,目前我遇到了一个问题。我可以在BASH中做到这一点,但我想学习python。
我需要对远程服务器上执行的命令的输出执行数学运算。Python 2.7对输出的数学运算

if argument == "hosts": 
    output = [] 
    output.append(os.popen("ssh -q -o ConnectTimeout=40 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no %s cat /home/rb6873/oraclevm | cut -d\| -f3 | cut -d\= -f2 " % host).read().rstrip('\n')) 
    print(host) 
    for row in output: 
     print(row) 

现在我不知道下一步该怎么做。我试图找到解决办法,但我失败了。

在这种情况下,输出是['50 \ n100 \ n75'],它的类型是列表。这仅仅是一个例子,这个输出的长度在不同的服务器上会有所不同。

我想要做的就是做简单的数学 - 从这个输出中总结字符串/行。

有人可以告诉我如何解决我的问题,或者至少指向正确的方向吗?

最好的问候, 扬

+0

你有没有尝试过任何东西?你只需要解析这个响应(由\ n分隔的整数,据我所知)并将它们相加。 –

+0

究竟是什么问题?你有什么尝试,你卡在哪里?这听起来是你没有尝试先解决你的问题做出诚实的努力...... – skyking

+0

正如你把它列入一个清单,它是一个清单,克拉罗。总结字符串意味着:计算行结束字符? ......或者在行结束符上分割,将条目解释为数字并将其作为例子进行总结?请提出更具体的问题。谢谢(并提供一些差异从你提到的服务器调用“输出”) – Dilettant

回答

0

要获得这些投入,你只是(一)在您的通话popendeadlines()取代read(),使每个输入行成为你的列表中的元素的总和;和(b)用sum(int(x) for x in output)来计算总和。

if argument == "hosts": 
    lines = os.popen(...).readlines() 
    print(sum(int(x) for x in lines)) 

但你可能无法解释是如何工作的,所以这个答案不会教你很多关于使用Python;阅读the python tutorial,你会发现去更容易。 立即切换到Python 3。你为什么学习过时的语言版本?