Bagaimana Anda membandingkan perbedaan dalam python?

filecmp Membandingkan file file1 dan file2 dan mengembalikan True jika identik, False jika tidak. Secara default, file yang memiliki atribut identik dikembalikan oleh os. stat() dianggap sama. Jika dangkal tidak disediakan (atau Benar), file yang memiliki tanda tangan stat yang sama dianggap sama

cmpfiles(dir1, dir2, common[, shallow])

Membandingkan isi file yang terdapat dalam daftar umum di dua direktori dir1 dan dir2. cmpfiles mengembalikan tuple yang berisi tiga daftar - cocok, tidak cocok, kesalahan nama file

  • cocok - daftar file yang sama di kedua direktori

  • mismatch - daftar file yang tidak cocok

  • kesalahan - mencantumkan file yang tidak dapat dibandingkan karena beberapa alasan

dircmp(dir1, dir2 [, ignore[, hide]])
_

Membuat objek perbandingan direktori yang dapat digunakan untuk melakukan berbagai operasi perbandingan pada direktori dir1 dan dir2

  • abaikan - mengabaikan daftar nama file yang akan diabaikan, nilai default ['RCS','CVS','tags']

  • sembunyikan - daftar nama file yang akan disembunyikan, daftar default [os. curdir, os. pardir] (['. ', '. '] di UNIX

Contoh filecmp. dircmp mengimplementasikan metode berikut yang mencetak laporan terperinci ke sys. stdout

  • laporan(). Mencetak perbandingan antara dua direktori

  • report_partial_closure(). Mencetak perbandingan dua direktori serta subdirektori langsung dari keduanya

    cmpfiles(dir1, dir2, common[, shallow])
    0

  • report_full_closure(). Mencetak perbandingan dua direktori, semua subdirektorinya, semua subdirektori dari

    cmpfiles(dir1, dir2, common[, shallow])
    1

  • daftar_kiri. file dan subdirektori ditemukan di direktori path1, tidak termasuk elemen hidelist

  • daftar_kanan. file dan subdirektori ditemukan di direktori path2, tidak termasuk elemen hidelist

  • umum. file dan subdirektori yang ada di direktori path1 dan direktori path2

  • left_only. file dan subdirektori yang hanya ada di direktori path1

  • benar_hanya. file dan subdirektori yang hanya ada di direktori path2

  • common_dirs. subdirektori yang ada di direktori path1 dan direktori path2

  • berkas umum. file yang ada di direktori path1 dan direktori path2

  • file_sama. Jalur ke file yang isinya identik di direktori jalur1 dan direktori jalur2

  • diff_files. Path ke file yang ada di direktori path1 dan direktori path2 tetapi isinya berbeda

  • file_lucu. path ke file yang ada di direktori path1 dan direktori path2 tetapi tidak dapat dibandingkan karena beberapa alasan

  • subdirektori. Kamus yang memetakan nama di common_dirs ke objek dircmp

Mempersiapkan data uji untuk perbandingan

import os
# prepare test data
def makefile(filename,text=None):
"""
Function: make some files
params : input file, body
"""

with open(filename, 'w') as f:
f.write(text or filename)

return

# prepare test data
def makedirectory(directory_name):
"""
Function: make directories
params : input directory
"""
if not os.path.exists(directory_name):
os.mkdir(directory_name)


# Get current working directory
present_directory = os.getcwd()

# change to directory provided
os.chdir(directory_name)

# Make two directories
os.mkdir('dir1')
os.mkdir('dir2')

# Make two same subdirectories
os.mkdir('dir1/common_dir')
os.mkdir('dir2/common_dir')

# Make two different subdirectories
os.mkdir('dir1/dir_only_in_dir1')
os.mkdir('dir2/dir_only_in_dir2')

# Make a unqiue file one each in directory
makefile('dir1/file_only_in_dir1')
makefile('dir2/file_only_in_dir2')

# Make a unqiue file one each in directory
makefile('dir1/common_file', 'Hello, Writing Same Content')
makefile('dir2/common_file', 'Hello, Writing Same Content')

# Make a non unqiue file one each in directory
makefile('dir1/not_the_same')
makefile('dir2/not_the_same')

makefile('dir1/file_in_dir1', 'This is a file in dir1')

os.mkdir('dir2/file_in_dir1')

os.chdir(present_directory)

return

if __name__ == '__main__':
os.chdir(os.getcwd())
makedirectory('example')
makedirectory('example/dir1/common_dir')
makedirectory('example/dir2/common_dir')
_
  • contoh filecmp Menjalankan contoh filecmp. Argumen dangkal memberi tahu cmp() apakah akan melihat konten file, selain metadatanya

Standarnya adalah melakukan perbandingan dangkal menggunakan informasi yang tersedia dari os. status(). Jika hasilnya sama, file dianggap sama. Dengan demikian, file dengan ukuran yang sama yang dibuat pada waktu yang sama dilaporkan sama, meskipun isinya berbeda

Tutorial ini melihat berbagai teknik perbandingan Python untuk dua file. Kita akan membahas cara melakukan pekerjaan tipikal ini dengan menggunakan modul yang tersedia, membaca dua file, dan membandingkannya baris demi baris

Di Python, membandingkan dua file bisa dilakukan dengan berbagai cara

Membandingkan Dua File Teks Baris demi Baris

Menggunakan fungsi open() untuk membaca data dari dua file teks, kita dapat membandingkan informasi yang dikandungnya. Direktori lokal akan dicari dan berpotensi dibaca oleh fungsi open()

Contoh

Kami akan membandingkan dua file yang berisi data python dalam contoh ini. Kami diberitahu bahwa kedua file python ini mungkin tidak sama. Python akan memeriksa file untuk kita. Dimungkinkan untuk mengekstrak baris dari file python menggunakan metode readlines()

file1 = open('D:\Work TP/moving files.py', 'r') file2 = open('D:\Work TP/mysql_access.py', 'r') File3 = open('D:\Work TP/trial.py', 'w') for line1 in file1: for line2 in file2: if line1 == line2: File3.write("%s\n" %(line1)) File3.close() file1.close() file2.close()

A for loop digunakan untuk membandingkan file baris demi baris setelah data diekstrak. Pengguna diberi tahu di mana ketidakcocokan terjadi jika baris tidak cocok dengan pesan. Untuk memudahkan pengguna menemukan berbagai baris, kami akan menyertakan data itu sendiri

Keluaran

Berikut ini adalah output dari kode di atas -

Line 1 doesn't match.
------------------------
File1: # importing the modules

File2: import mysql.connector

Line 2 doesn't match.
------------------------
File1: import os

File2: sampleDB=mysql.connector.connect(host='localhost',user='root',password='password',database='textx')

Line 3 doesn't match.
------------------------
File1: import shutil

File2: #print (sampleDB.connection_id)

Line 4 doesn't match.
------------------------
File1: # Providing the folder path

File2: cur=sampleDB.cursor()

Line 5 doesn't match.
------------------------
File1: origin = 'C:\Users\Lenovo\Downloads\Works\'

File2: s="CREATE TABLE novel(novelid integer(4),name varchar(20),price float(5,2))"

Line 6 doesn't match.
------------------------
File1: target = 'C:\Users\Lenovo\Downloads\Work TP\'

File2: cur.execute(s)
_

Menggunakan Modul filecmp

Bekerja dengan file di Python dimungkinkan melalui modul filecmp. Modul ini dirancang khusus untuk membandingkan data antara dua file atau lebih. Menggunakan filecmp. cmp() metode, kita dapat melakukannya. Jika file cocok, fungsi ini akan mengembalikan True;

Contoh

Berikut adalah contoh penggunaan filecmpule −

Keluaran

Berikut adalah output dari kode di atas -

The two files are different.

Menggunakan Modul difflib

Untuk membandingkan teks dan mengidentifikasi variasi di antaranya, gunakan paket difflib. Bahasa sudah dikemas sebelumnya dengan modul Python 3 ini. Ini memiliki banyak fitur bermanfaat untuk membandingkan sampel teks

Pertama, kita akan mengidentifikasi perbedaan antara dua file data menggunakan fungsi unified diff(). Kami akan membandingkan file-file ini selanjutnya

Contoh1-Menggunakan unified-diff()

Pernyataan with digunakan untuk membaca data file dalam contoh berikut. Pernyataan Python dengan memungkinkan kita untuk membuka dan membaca file dengan aman −

import difflib with open("D:\Work TP/moving files.py",'r') as file1: file1_info = file1.readlines() with open("D:\Work TP/trial.py",'r') as file2: file2_info = file2.readlines() diff = difflib.unified_diff( file1_info, file2_info, fromfile="file1.py", tofile="file2.py", lineterm='') for lines in diff: print(lines)

_

Keluaran

Berikut adalah output dari kode di atas -

--- file1.py
+++ file2.py
@@ -1,12 +0,0 @@

-# importing the modules

-import os

-import shutil

-# Providing the folder path

-origin = 'C:\Users\Lenovo\Downloads\Works\'

-target = 'C:\Users\Lenovo\Downloads\Work TP\'

-# Fetching the list of all the files

-files = os.listdir(origin)

-# Fetching all the files to directory

-for file_name in files:

- shutil.copy2(origin+file_name, target+file_name)

-print("Files are copied succesfully")
_

Contoh2-Menggunakan perbedaan()

Di dalam pustaka difflib, ada kelas bernama Differ yang dapat digunakan untuk membandingkan perbedaan file. Kelas ini digunakan untuk membandingkan kelompok baris teks dan menghasilkan delta atau perbedaan

Bagaimana Anda membandingkan dua hal dengan Python?

== dan adalah dua cara untuk membandingkan objek dengan Python. == membandingkan 2 objek untuk kesetaraan, dan membandingkan 2 objek untuk identitas. .
Contoh 1 membandingkan 2 string. .
Contoh 2 membuat daftar a dan b yang akhirnya merujuk ke objek yang sama

Bagaimana Anda membandingkan hasil dengan Python?

The == dan adalah Operator . Pada pandangan pertama mereka tampak sama, tetapi sebenarnya tidak. == membandingkan dua variabel berdasarkan nilai yang mereka wakili. Sebaliknya, operator is membandingkan dua variabel berdasarkan ID objek di memori.

Bagaimana Anda membandingkan dua daftar dan menemukan perbedaan dalam Python?

Perbedaan antara dua daftar (katakanlah daftar1 dan daftar2) dapat ditemukan dengan menggunakan fungsi sederhana berikut. Dengan Menggunakan fungsi di atas, perbedaannya dapat ditemukan menggunakan diff(temp2, temp1) atau diff(temp1, temp2) . Keduanya akan memberikan hasil ['Empat', 'Tiga'].

Apakah == Operator pembanding dengan Python?

Operator “==” membandingkan dengan memeriksa kesetaraan . jika kita membandingkan objek dua orang di atas menggunakan operator ==, kita akan mendapatkan jawaban "kedua orang itu sama", karena mereka membawa nilai nama yang sama. Namun, operator "adalah", membandingkan identitas.