如何比较Python中文件的内容?

时间:2019-02-23 05:33:34

标签: python file compare

到目前为止,这是我的代码,如果两个文件中的内容相同,我将尝试比较用户给定的文件并进行打印。如果它是相同的字符串内容,但我不想打印Yes,请打印No以及两个文件中的单词。

print ('Enter the first file name: ', end = '')
FIRST_FILE = input()

print ('Enter the second file name: ', end = '')
SECOND_FILE = input()

if SECOND_FILE == line in FIRST_FILE:
    print('Yes')
else:
    print('No')

infile = open('one.txt', 'w')
infile.write('Hello') 
infile.close() 

infile2 = open('SameAsone.txt', 'w')
infile2.write('Hello') 
infile2.close()

infile3 = open('DifferentFromone.txt', 'w')
infile3.write('Bye') 
infile3.close() 

谢谢。

4 个答案:

答案 0 :(得分:3)

一种简单的方法是使用filecmp

import filecmp
check = filecmp.cmp('file1.txt', 'file1.txt')
print ('No', 'Yes')[check]

如果您想了解更多信息,请参见docs

答案 1 :(得分:0)

您可以使用use collections模块Counter方法和OrderedDict保留行的顺序来更有效地实现此目的。

from collections import Counter, OrderedDict

with open("one.txt") as file_one, open("two.txt") as file_two:
    if OrderedDict(Counter(file_one)) == OrderedDict(Counter(file_two)):
        print("matched")
    else:
        print("not macthed")

答案 2 :(得分:0)

一种简单的方法是使用f.read()读取两个文件,其中f是在读取('r')模式下打开的文件。 read()操作返回文件的字符串内容。

然后,我们使用==比较文件的读取内容,以确定字符串序列是否相同。

fileAfileB是存在的文件名,因此,最小文件比较代码应为:

  f = open(fileA, 'r')
  contentA = f.read()
  f.close()
  f = open(fileB, 'r')
  contentB = f.read()
  f.close()

  result = "No"
  if contentA == contentB:
    result = "Yes"

您还应该处理其中一个文件不存在的情况(如果fileA, fileB中的任何一个引用不存在的文件,则最小代码将返回一个追溯。

答案 3 :(得分:0)

您也可以使用.read,但我建议您使用with语句,因为不需要手动关闭文件。

def compare_files(fn1, fn2)
    with open(fn1, 'r') as file1, open(fn2, 'r') as file2:
            return file1.read() == file2.read()


first_file = input('Enter the first file name: ')
second_file = input('Enter the second file name: ')

print(['No', 'Yes']compare_files(first_file, second_file))