我有两个文本文件,其数据类似于下面的示例。 使用python,我想保存到一个新文件,第一行的行没有出现在第二个文件中。这些行不包含在文件中。
----- 行 ---- 第一个文件 ---------- 第二个文件
1 116969 116969
2 116973 116977
3 116977 117000
4 117000 117028
5 117004 117032
6 117028 117036
7 117032 117066
8 117036 117104
9 117062
10 117066
11 117097
12 117104
新文件必须具有此结构。
2
5
9
11
修改:到目前为止,这是我的代码。列表sendfiles包含具有原始数据的文件的路径。列表receivefiles包含具有较少数据的文件的路径。
for x in range(0, len(sendfiles)):
f1 = open(sendfiles[x], 'r').readlines()
f2 = open(receivefiles[x], 'r').readlines()
path = sendfiles[x].strip('send.txt')
final_file = path + 'out.txt'
with open(final_file,'w') as f:
...
在unix中,我使用diff -f命令,但知道我必须编写一些python代码来执行此操作。
Edit2 :这是send.txt的示例,这是receive.txt
的示例答案 0 :(得分:1)
f1 = open('a', 'r').readlines()
f2 = open('b', 'r').readlines()
out = []
count = 1
for i in f1:
flag = False
for j in f2:
if i == j:
flag = True
if not flag:
out.append(count)
count+=1
for o in out:
print o
优化一个
f1 = open('a', 'r').readlines()
f2 = open('b', 'r').readlines()
out = []
indexa = 0
indexb = 0
out = []
while(1):
try:
if f1[indexa][:-1] == f2[indexb][:-1]:
indexa +=1
indexb +=1
elif f1[indexa][:-1] > f2[indexb][:-1]:
indexb += 1
elif f1[indexa][:-1] < f2[indexb][:-1]:
out.append(indexa+1)
indexa += 1
except IndexError:
break
for i in out:
print i