Kami akan menggunakan dua file Python yang berbeda untuk menentukan perbedaan antara kedua file menggunakan perintah diff. Bagaimanapun juga kita adalah manusia dan ada banyak contoh kita akan membuat kesalahan seperti lupa spasi, titik, atau tanda hubung.
Pertama-tama, kita akan membuat dua file Python yang disusun ulang1. py dan atur ulang2. py. Saya menggunakan nano tetapi Anda dipersilakan untuk menggunakan vim, mana saja yang mengapung perahu Anda
touch rearrange1.py
nano rearrange1.py
Masukkan kode di bawah ini di rearrange1. py
#!/usr/bin/env python3import redef rearrange_name(name):result = re.search(r”^([\w .]*), ([\w .]*)$”, name)
if result == None:
return result
return “{} {}”.format(result[2], result[1])
Ctrl+O, Enter, Ctrl+X untuk menyimpan pengaturan ulang1. py
Sekarang, masukkan kode di bawah ini di rearrange2. py
#!/usr/bin/env python3import redef rearrange_name(name):result = re.search(r”^([\w .-]*), ([\w .-]*)$”, name)
if result == None:
return result
return “{} {}”.format(result[2], result[1])_
Pastikan untuk menyimpan mengatur ulang2. py. Setelah menyimpan, pastikan untuk chmod +x kedua file ini. Kedua file akan terlihat seperti ini
Gambar 1. Struktur kedua file
Kami mungkin dapat mengetahui perbedaan antara kedua file Python ini karena tidak banyak baris yang harus dilihat; . Hal terbaik untuk dilakukan adalah menggunakan perintah diff
diff rearrange1.py rearrange2.py_
Gambar 2. Perbedaan antara mengatur ulang1. py dan atur ulang2. py
Lebih jelas sekarang berdasarkan dua hasil dari Gambar 2 ini, Anda pasti bisa melihat perbedaannya. Hanya ada dua garis untuk melihat perbedaannya. Kadang-kadang ketika file lebih besar, mungkin ada banyak baris yang menunjukkan banyak perbedaan
Perbedaannya terletak pada simbol garis. Simbol kurang dari memberi tahu kita bahwa baris pertama telah dihapus dari file pertama, dan simbol lebih besar memberi tahu kita bahwa baris kedua ditambahkan ke file kedua. Pada dasarnya, baris sebelumnya diganti dengan baris yang lebih baru. Ini biasa terjadi dalam hal modifikasi kode. Ini bukan satu-satunya kemungkinan karena ada contoh lain yang dapat dijelaskan lebih lanjut secara rinci pada referensi di bawah ini
(Referensi. pengalaman langsung dari kursus Google di Coursera berjudul, “Intro to Git and Github”)
Lebih banyak konten di PlainEnglish. io. Mendaftar untuk buletin mingguan gratis kami. Ikuti kami di Twitter dan LinkedIn. Bergabunglah dengan komunitas kami Perselisihan
Modul ini mendefinisikan fungsi untuk membandingkan file dan direktori, dengan berbagai pertukaran waktu/kebenaran opsional. Untuk membandingkan file, lihat juga modul
Modul ini mendefinisikan fungsi-fungsi berikut
filecmp. cmp(f1 , f2 , dangkal=Benar)Bandingkan file bernama f1 dan f2, kembalikan True jika terlihat sama, False jika tidak
Jika dangkal benar dan tanda tangan (jenis file, ukuran, dan waktu modifikasi) dari kedua file identik, file dianggap sama
Jika tidak, file akan dianggap berbeda jika ukuran atau isinya berbeda
Perhatikan bahwa tidak ada program eksternal yang dipanggil dari fungsi ini, memberikan portabilitas dan efisiensi
Fungsi ini menggunakan cache untuk perbandingan sebelumnya dan hasilnya, dengan entri cache tidak valid jika informasi untuk file berubah. Seluruh cache dapat dihapus menggunakan
filecmp. file cmp(dir1 , dir2 , umum , dangkal=Benar)Bandingkan file di dua direktori dir1 dan dir2 yang namanya diberikan secara umum
Mengembalikan tiga daftar nama file. cocok, tidak cocok, kesalahan. match berisi daftar file yang cocok, mismatch berisi nama file yang tidak cocok, dan error mencantumkan nama file yang tidak dapat dibandingkan. File terdaftar dalam kesalahan jika tidak ada di salah satu direktori, pengguna tidak memiliki izin untuk membacanya atau jika perbandingan tidak dapat dilakukan karena alasan lain
Parameter dangkal memiliki arti dan nilai default yang sama dengan untuk
Misalnya, filecmp_1 akan membandingkan filecmp2 dengan filecmp3 dan filecmp4 dengan filecmp5. filecmp6 dan filecmp7 masing-masing akan berada di salah satu dari tiga daftar yang dikembalikan
filecmp. hapus_cache()Bersihkan cache filecmp. Ini mungkin berguna jika file dibandingkan dengan sangat cepat setelah dimodifikasi sehingga berada dalam resolusi mtime dari sistem file yang mendasarinya
Baru di versi 3. 4
Kelas
kelas filecmp. dircmp(a , b, ignore=None, hide=None)Bangun objek perbandingan direktori baru, untuk membandingkan direktori a dan b. abaikan adalah daftar nama untuk diabaikan, dan defaultnya. hide adalah daftar nama yang akan disembunyikan, dan standarnya adalah filecmp0
Kelas membandingkan file dengan melakukan perbandingan dangkal seperti yang dijelaskan untuk
Kelas menyediakan metode berikut
laporkan()Cetak (ke ) perbandingan antara a dan b
report_partial_closure()Cetak perbandingan antara a dan b dan subdirektori langsung umum
report_full_closure()Cetak perbandingan antara a dan b dan subdirektori umum (secara rekursif)
Kelas menawarkan sejumlah atribut menarik yang dapat digunakan untuk mendapatkan berbagai bit informasi tentang pohon direktori yang dibandingkan
Perhatikan bahwa melalui filecmp6 kait, semua atribut dihitung dengan malas, jadi tidak ada penalti kecepatan jika hanya atribut yang ringan untuk dihitung yang digunakan
kiriDirektori a
BaikDirektori b
daftar_kiriFile dan subdirektori dalam a, difilter dengan sembunyikan dan abaikan
daftar_kananFile dan subdirektori di b, difilter dengan sembunyikan dan abaikan
umumFile dan subdirektori di a dan b
left_onlyFile dan subdirektori hanya di a
File dan subdirektori hanya ada di b
common_dirsSubdirektori di a dan b
berkas umumFile di a dan b
common_funnyNama di a dan b, sedemikian rupa sehingga jenisnya berbeda di antara direktori, atau nama yang melaporkan kesalahan
file_samaFile yang identik di a dan b, menggunakan operator perbandingan file kelas
diff_filesFile yang ada di a dan b, yang isinya berbeda menurut operator pembanding file kelas
file_lucuFile yang ada di a dan b, tetapi tidak dapat dibandingkan
subdirektoriNama pemetaan kamus ke dalam instance (atau instance MyDirCmp jika instance ini bertipe MyDirCmp, subkelas dari )
Berubah di versi 3. 10. Sebelumnya entri selalu contoh. Sekarang entri bertipe sama dengan self, jika self adalah subkelas dari.
filecmp. DEFAULT_IGNORESBaru di versi 3. 4
Daftar direktori yang diabaikan secara default
Berikut adalah contoh sederhana penggunaan atribut difflib_4 untuk mencari secara rekursif melalui dua direktori untuk menampilkan file umum yang berbeda