我是Python新手,需要一些帮助。
我有一个x
行数的文件。我想比较该文件的每一行与另一行,如果它们不同,则将该行写入该文件。
我找了一个答案,但没找到任何可以使用的东西。我自己尝试了一些东西,但它不起作用。
我的代码:
filename = ...
my_file = open(filename, 'r+')
for line in my_file:
new_line = ("text")
print line
print new_line
if new_line == line:
print('same')
else:
print('diffrent')
my_file.write('%s' % (new_line))
我只希望我的应用程序将该行写入该文件(如果该文件尚不存在)。
contents of filename
====================
text
text1
text2
在上面的情况下,新行是“text”,应用程序不应该执行任何操作,因为该行已存在于文件中。但是,如果新行是“text3”,则应将其写入文件,如下所示:
contents of filename
====================
text
text1
text2
text3
答案 0 :(得分:1)
首先,让我们读取文件的内容,以便我们检查新行是否已经存在。
existing_lines = [line.rstrip('\n') for line in open(filename, 'r')]
我们假设您有一个名为new_lines
的单独列表,其中包含您要对文件进行检查的所有行。然后,您可以检查以下哪些是新的:
new = [line for line in new_lines if line not in existing_lines]
这些是您希望附加到现有文件的行:
with open(filename, 'a') as f:
[f.write(line + '\n') for line in new]
答案 1 :(得分:0)
我建议您创建一个新文件并将差异写入新文件,而不是编辑file2.txt
with open("file1.txt", "r") as first_file, open("file2.txt", "r") as second_file:
file1 = first_file.readlines()
file2 = second_file.readlines()
length = min(len(file1), len(file2))
for i in xrange(length):
if file1[i].strip() != file2[i].strip():
#Do something here
答案 2 :(得分:0)
with open('1.txt') as f1, open('2.txt') as f2, open('diff.txt','w') as dst:
while True:
l1 = f1.readline()
l2 = f2.readline()
if not l1 and not l2:
break
if l1 != l2:
dst.write(l1)