如何避免python类中重复的代码

时间:2017-06-03 17:15:45

标签: python python-2.7

经过python类的努力,我的代码按预期工作。

但是我在脚本的每个地方使用了以下代码:

        buff = ''
        while not buff.endswith('#'):
            resp = self.remote_conn.recv(9999)
            buff += resp
            print resp

任何人都可以帮助我避免多次使用上面的代码,在下面的代码中

class Asr:
    def __init__(self):

        ''' SSH connection Establish '''
        self.hostname = hostname
        self.net_username = net_username
        self.net_password = net_password
    def remote(self):
        self.remote_conn_pre = paramiko.SSHClient()
        self.remote_conn_pre.set_missing_host_key_policy(
             paramiko.AutoAddPolicy())
        self.remote_conn_pre.connect(self.hostname, username=self.net_username, password=self.net_password, look_for_keys=False, allow_agent=False)
        self.remote_conn = self.remote_conn_pre.invoke_shell()
    def disable_paging(self):
        self.remote_conn.send("terminal length 0\n")
    def inventory(self):

        self.remote()
        self.remote_conn.send("\n")
        self.remote_conn.send("ping 1.1.1.1\n")
        buff = ''
        while not buff.endswith('#'):
            resp = self.remote_conn.recv(9999)
            buff += resp
            print resp
        self.remote_conn.send("ping 1.1.1.1\n")
        buff = ''
        while not buff.endswith('#'):
            resp = self.remote_conn.recv(9999)
            buff += resp
            print resp
        self.remote_conn.send("ping 1.1.1.1\n")
        buff = ''
        while not buff.endswith('#'):
            resp = self.remote_conn.recv(9999)
            buff += resp
            print resp
        self.remote_conn.close()
    def version(self):
        self.remote()
        self.remote_conn.send("\n")
        self.remote_conn.send("ping 1.1.1.1\n")
        buff = ''
        while not buff.endswith('#'):
            resp = self.remote_conn.recv(9999)
            buff += resp
            print resp
        self.disable_paging()
        self.remote_conn.send("show inventory\n")
        buff = ''
        while not buff.endswith('#'):
            resp = self.remote_conn.recv(9999)
            buff += resp
            print resp
        self.remote_conn.close()
asr = Asr()
asr.inventory()
asr.version()

1 个答案:

答案 0 :(得分:0)

使用与上述相同的功能 例如:

def check_buff(self, buff):

    while not buff.endswith('#'):
        resp = self.remote_conn.recv(9999)
        buff += resp
        print resp

每次调用函数并传递buff参数。 例如:

buff = ''
self.check_buff(buff)