Как мне сравнить содержимое файлов в Python? - PullRequest
0 голосов
/ 23 февраля 2019

Пока это мой код, я пытаюсь сравнить файлы, предоставленные пользователем, и распечатать, если содержимое обоих файлов одинаковое.Если это тот же строковый контент, который я хотел бы напечатать 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 голосов
/ 23 февраля 2019

Вы можете использовать .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))
0 голосов
/ 23 февраля 2019

Простой способ - прочитать оба файла, используя f.read(), где f - файл, открываемый в режиме чтения ('r').Операция read() возвращает строковое содержимое файлов.

Затем мы сравниваем содержимое чтения файлов, используя ==, чтобы определить, идентична ли последовательность строк.

Letting fileA, fileB быть существующими именами файлов. Следовательно, минимальный код сравнения файлов должен быть:

  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 ссылается на несуществующий файл.

0 голосов
/ 23 февраля 2019

Простой подход заключается в использовании filecmp

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

Если вам нужна дополнительная информация, см. документы

0 голосов
/ 23 февраля 2019

Вы можете достичь этого более эффективно, используя модуль сбора коллекций Счетчик , метод и 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...