严格搜索两个不同的文件

时间:2015-01-14 15:33:38

标签: windows python-2.7

我对以下代码有两个问题:

import subprocess

macSource1 = (r"\\Server\path\name\here\dhcp-dump.txt")
macSource2 = (r"\\Server\path\name\here\dhcp-dump-ops.txt")

with open (r"specific-pcs.txt") as file:
    line = []
    for line in file:
        pcName = line.strip().upper()
        with open (macSource1) as source1, open (macSource2) as source2:
            items = []
            for items in source1:
                if pcName in items:
                    items_split = items.rstrip("\n").split('\t')
                    ip = items_split[0]
                    mac = items_split[4]
                    mac2 = ':'.join(s.encode('hex') for s in mac.decode('hex')).lower()  # Puts the :'s between the pairs.
                    print mac2
                    print pcName
                    print ip

首先,正如您所看到的,脚本正在搜索" specific-pcs.txt"的内容。针对macSource1的内容获取各种细节。如何让它搜索两个macSource1& 2(因为详细信息可以在任一文件中)??

其次,我需要有一个更严格的匹配过程,因为目前一台名为' itroom02'我们不仅会找到它自己的详细信息,还会提供另一台名为' 2nd-itroom02'的机器的详细信息。我怎么能得到它?

非常感谢您的帮助! 克里斯。

1 个答案:

答案 0 :(得分:0)

也许你应该重新调整一下这个:

macSources = [ r"\\Server\path\name\here\dhcp-dump.txt",
               r"\\Server\path\name\here\dhcp-dump-ops.txt" ]

with open (r"specific-pcs.txt") as file:
    for line in file:
        # ....
        for target in macSources:
            with open (target) as source:
                for items in source:
                   # ....

没有必要这样做line = []之前的for line in ...:

就“更严格的匹配”而言,由于您没有提供文件格式的示例,我只能猜测 - 但您可能希望在完成后尝试if items_split[1] == pcName:之类的内容在拆分之前拆分,而不是if pcName in items:(假设名称在第二列中 - 如果没有,则相应调整)。