2016-08-04 137 views
-1

我有一个函数输出的列表,我想验证数组中的元素是否在文件(包含服务器名称的文本文件)中,并且我想要只打印那些不在文件中的服务器。Python:验证列表中的元素是否存在于文件中,如果不存在,则打印

在这些线路上的一些思考:

host_list = ['abc.server.com', 'xyz.server.com'] 
sfile = open("slist.txt","r") 
for num in host_list: 
     do 
      for aline in sfile.realines(): 
       if num =! aline.split() 
       print num 
sfile.close() 
+1

那么究竟是什么问题? – Mureinik

+1

'do'不是有效的Python语法。你也希望'!='而不是'=!'。并使用'with'块来打开文件。 –

+1

实际上,您的代码中有几处拼写错误。 –

回答

1

这里有一个简单的方法做你正在尝试做的:

host_list = ['abc.server.com', 'xyz.server.com'] 
sfile = open("slist.txt","r") 
hosts_in_file = set() 
for line in sfile: 
    for server in line.strip().split(): 
    hosts_in_file.add(server) 

print [host for host in host_list if host not in hosts_in_file] 
sfile.close() 
+0

感谢它的工作。 – cloudvar

+0

你也可以感谢我upvote :) – bpachev

相关问题