如何解决如何使用python搜索另一个文件中文件的每一行?
我的Expect_cmd.txt(例如f1)是
mpls ldp
snmp go
exit
和我的configure.txt(例如f2)是
exit
with open('expected_cmd.txt','r') as rcmd,open('%s.txt' %configured,'r') as f2:
for line in rcmd:
print 'line present is ' + line
if line in f2:
continue
else:
print line
所以基本上我想从第二个文件中没有的第一个文件中打印行。 但是使用上面的代码,我得到的输出为
#python validateion.py
line present is mpls ldp
mpls ldp
line present is snmp go
snmp go
line present is exit
exit
不确定为什么要打印匹配的exit
。
我还想知道是否有内置函数在python中执行此操作?
解决方法
with open('%s.txt' %configured,'r') as f2:
cmds = set(i.strip() for i in f2)
with open('expected_cmd.txt','r') as rcmd:
for line in rcmd:
if line.strip() in cmds:
continue
else:
print line
这解决了我的问题。
, open
文件时获得的文件对象包含有关文件和文件中当前位置的信息。默认情况下,位置是在'r'
模式1中打开文件时的开头。
从文件读取(或写入)某些数据时,位置将移动。例如,f.read()
读取所有内容并移至文件末尾。重复的f.read()
不会读取任何内容。
当您遍历文件(例如line in f2
)时,也会发生类似的情况。
我建议,除非文件大小为千兆字节,否则您应该读取两个文件,然后再执行内存中的其余逻辑,例如:
with open('expected_cmd.txt','r') as f1:
lines1 = list(f1)
with open('%s.txt' %configured,'r') as f2:
lines2 = list(f2)
然后您可以实现逻辑:
for line in lines1:
if line not in lines2:
print(line)
,
您完全阅读了configure.txt,并通过删除rcmd中的行来进行搜索。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。