文件内容是否完全存在于库文件中

时间:2013-05-05 12:08:07

标签: python linux perl bash

我刚刚完成了很长一段代码的重构。

我的重构包括将源代码分解为许多文件夹中许多文件中的许多函数。

既然我已经完成了,我想确保原始代码中没有一行不存在于我创建的新文件中。

我需要的伪代码是这样的:

for line in sourceCode:
    if length(grep line refacoredLib)==0:
        print line + " does not exist in refactored code"

我的第一个想法是写一个python \ bash实现,你知道有更优雅的解决方案吗? 谢谢!

2 个答案:

答案 0 :(得分:6)

或者,如果您不想重新发明轮子:

cat newfiles/* | sort > /tmp/new
cat oldfile.py | sort > /tmp/old
comm -23 /tmp/old /tmp/new

不是Python,我知道,但仍然。

答案 1 :(得分:1)

好吧,你可以比较Python中的几组行,但这不是一行的。

source_files = ['source1.py', 'source2.py']
new_files = ['new1.py', 'new2.py']

old_lines, new_lines = set(), set()
for source in source_files:
   with open(source) as sf:
       old_lines.update(sf)
for new in new_files:
   with open(new) as nf:
       new_lines.update(nf)
for line in old_lines - new_lines:
    print line + " does not exist in refactored code"