我的代码具有if-else条件,但我认为代码没有检查if条件,而是直接转到else条件

时间:2019-10-24 11:44:01

标签: python

我有这段代码可以更改文件系统的大小。问题是,即使满足if条件,它也不会进入if条件,而我根本没有检查if条件。直接进入else条件。

运行代码后的结果

  

post-install-ray.py chpasswd

     

chpasswd根目录:Deepsky24

     

df -g | grep -w / | awk'{print $ 3}'   0.89

     

df -g | grep -w / usr | awk'{print $ 3}'   5.81

     

chfs -a size = + 4G /文件系统大小更改为10354688

代码:

import subprocess
import sys
import pexpect
from pexpect import pxssh
import logging

password = "Deepsky24"
hostname = "host"
username = "root"

def change_filesystem():
    child = pxssh.pxssh()
    child.login(hostname, username, password)
    child.sendline("df -g | grep -w / | awk '{ print $3 }'")
    child.prompt()
    output1 = child.before
    print output1
    child.sendline("df -g | grep -w /usr | awk '{print $3 }'")
    child.prompt()
    output2 = child.before
    print output2
    if (output1 <= 1 and output2 >= 4):

        child.sendline('chfs -a size=-3G /usr')
        child.prompt()
        print(child.before)
        child.sendline('chfs -a size=+3G /')
        child.prompt()
        print(child.before)

    else:

        child.sendline('chfs -a size=+4G /')
        child.prompt()
        print(child.before)

if __name__== "__main__":

        change_filesystem()

2 个答案:

答案 0 :(得分:2)

您的两个输出仍然是字符串,您需要将它们转换为浮点数

output1 = float(child.before)
output2 = float(child.before)

答案 1 :(得分:1)

我想你在python 2上。

child.before返回一个字符串。 您将字符串与整数进行比较,并得到意外的结果。 使用int()float()

投射输出

使用python 3,您可能会有例外