Python:重定向在os.system上不起作用

时间:2019-01-30 13:04:03

标签: python networking

我正在尝试对某些开关进行快速ping检查。 我开始一个while循环,遍历文件中的所有循环。 在while循环中,我调用了一个名为pings的函数,它唯一执行的操作是ping当前IP,并使用“>”输出重定向到名为ping.txt的文件,此后,另一个函数将其正确格式化,然后插入数据库。

只要我尝试过,它只会插入最后一个ping。

我已经调试了它,它每次都将ip带到pings函数中,但是仅将最后一次ping重定向到文件。

为简单起见,我仅采用了代码的受影响部分并将其保存到文件中(已经在新文件上尝试过并且无法使用)。

class Network(object):

    def __init__(self):
        pass

    def pings(self,ip):
        os.system("ping -c 1 {}>ping.txt".format(ip))   

class FullPass(object):

    def __init__(self):
        pass

    def pings(self, ip, archivo):
        net = Network()
        net.pings(ip)

if __name__ == "__main__":
    full = FullPass()
    f = open('switches.txt')
    ip = f.readline()
    while ip != "":
        full.pings(ip, 'ping.txt')
        ip = f.readline()

2 个答案:

答案 0 :(得分:0)

您需要使用“ >>”而不是“>”。有两个符号做一个追加,而一个符号在写入目标之前将其截断。

答案 1 :(得分:0)

感谢您的帮助,最终的方式是这样的:

 def command(self, ip, file, com): 
    with open(file, 'a') as outfile: 
        subprocess.call([com+ip[:-1]], stdout=outfile, shell=True)