Saya memiliki 2 file teks dan saya ingin membandingkan konten satu dengan yang lain. Perlu memeriksa ip di Unique. txt ada atau tidak di CheckIp. txt. Kode saya terlihat seperti
with open("/root/nix_bsd_mac_inventory-master/Unique.txt") as fp: for line in fp: print(line) with open("/root/nix_bsd_mac_inventory-master/CheckIp.txt") as fp1: for line1 in fp1: line1 = line1.rstrip() if line == line1: print (line1 + "Ip is Already Present") else: print ("Processing Ip:"+ line)Tampaknya sesuatu yang saya lakukan salah. Dapatkah seseorang tolong bantu saya?
Perintah perbandingan file membantu kita membandingkan file dan menemukan persamaan dan perbedaan antara file-file ini. Berbagai perintah perbandingan file yang digunakan di Unix adalah cmp, comm, diff, dircmp, dan uniq.
Video Unix #8
Berbagai cara membandingkan dua file di Unix
#1) cmp. Perintah ini digunakan untuk membandingkan dua file karakter per karakter.
- Sintaksis. cmp [opsi] file1 file2
- Contoh. Tambahkan izin tulis untuk pengguna, grup, dan lainnya untuk file1.
- $ cmp file1 file2
#2) kom. Perintah ini digunakan untuk membandingkan dua file yang diurutkan.
- Sintaksis. comm [opsi] file1 file2
- Satu set opsi memungkinkan pemilihan 'kolom' untuk ditekan
- -1. menekan baris unik untuk file1 (kolom 1)
- -2. tekan baris unik untuk file2 (kolom 2)
- -3. menekan baris umum untuk file1 dan file2 (kolom3)
- Contoh. Hanya tampilkan kolom-3 yang berisi baris umum antara file1 dan file2
- $ comm -12 file1 file2
#3) perbedaan. Perintah ini digunakan untuk membandingkan dua file baris demi baris.
- Keterangan. Keluaran menunjukkan bagaimana baris di setiap file berbeda, dan langkah-langkah yang terlibat untuk mengubah file1 menjadi file2. Perintah 'patch' dapat digunakan untuk membuat perubahan yang disarankan. Output diformat sebagai blok
Ubah perintah
< baris dari file1
—
> baris dari file2
Perintah perubahan dalam format [rentang][acd][rentang]. Kisaran di sebelah kiri mungkin berupa nomor baris atau rentang nomor baris yang dipisahkan koma yang merujuk ke file1, dan rentang di sebelah kanan juga merujuk ke file2. Karakter di tengah menunjukkan tindakan i. e. tambah, ubah atau hapus
Dalam tutorial ini Anda akan belajar memilih kata dari file, membandingkannya, dan menggabungkan kata-kata umum dalam file baru
Anda akan berlatih 🔁
- Penanganan file dengan Python
- Set dengan Python
- Menggunakan fungsi untuk menggunakan kembali kode
- Beberapa instruksi baris perintah dasar
Mari kita mulai 🐍
Kode. Ingat bahwa semua kode yang ditampilkan selama tutorial ini akan didorong ke github
Pengembang-jalan / gabungkan-kata-umum
Program untuk menggabungkan kata-kata umum dari dua file menjadi satu sama lain
Program untuk menggabungkan kata-kata umum dari dua file menjadi satu sama lain
Lihat di GitHub
Pertama-tama buat file Python, saya akan menggunakan nama file yang panjang dan deskriptif file1 = open("text_one.txt) 2 😆
Mari buat file itu dengan terminal
Catatan. jika Anda menggunakan windows, tidak satu pun dari perintah ini akan berjalan, jadi lakukan saja semua hal dengan antarmuka grafis, seperti pengelola file dari editor kode Anda. Jika Anda menggunakan Mac 🍎, atau Linux 🐧 tetap santai, dan pelajari terminal sebaik mungkin
Ingat bahwa Python sebagian besar adalah bahasa pemrograman CLI, jadi Anda akan menggunakan banyak terminal, jadi saran saya adalah gunakan terminal kapan pun Anda bisa 😀
touch merge.py
Masuk ke mode layar penuh Keluar dari mode layar penuh
Perintah sentuh akan membuat file kosong file1 = open("text_one.txt) 2, di direktori tempat Anda berada
Sekarang saya akan memanggil editor grafis, dari terminal 😱, dalam hal ini saya akan menggunakan vscode
code ./ _
Masuk ke mode layar penuh Keluar dari mode layar penuh
Ingatlah bahwa di UNIX (jangan takut, ini mengacu pada OS berbasis Unix, seperti Linux dan Mac), file1 = open("text_one.txt) 4 titik mengacu pada direktori saat ini
Sekarang setelah saya menyiapkan Vscode dan mari kita mulai dengan kodenya
Buka file dengan Python
Pertama-tama, kami akan menggunakan beberapa file teks dalam tutorial ini, Anda dapat mengunduhnya dengan mudah di github, dengan mengkloning repositori atau cukup mengikuti tautan di bawah ini
text_one. txt
teks_dua. txt
Di Python Anda membuka file dengan fungsi, file1 = open("text_one.txt) 5 yang mengambil sebagai parameter jalur file
Pastikan Anda telah mengunduh file teks, dan ketik file file1 = open("text_one.txt)
2 kode berikut
file1 = open("text_one.txt) _
Masuk ke mode layar penuh Keluar dari mode layar penuh
Ini akan membuat variabel file1 = open("text_one.txt) _7, yang merupakan objek file, dengan mode "baca" (secara default)
Jika Anda mencoba mencetak variabel itu, Anda akan mendapatkan sesuatu seperti ini
print(file1) # Result # <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
Masuk ke mode layar penuh Keluar dari mode layar penuh
Itu karena variabel itu hanyalah objek file dari file teks bernama, "text_one. txt"
Tapi hati-hati jika file tersebut tidak ada, Anda akan mendapatkan error 😱
file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
Masuk ke mode layar penuh Keluar dari mode layar penuh
Jadi setiap kali kita bekerja dengan file, kita harus menggunakan beberapa pemrograman defensif, untuk menghindari kesalahan jika file tidak ada
try: file1 = open("text_oness.txt") except FileNotFoundError: print("Sorry that file doesn't exist") exit()
Masuk ke mode layar penuh Keluar dari mode layar penuh
Kami menggunakan fungsi file1 = open("text_one.txt) _8 karena jika file tidak ada, kami tidak akan memiliki variabel untuk dikerjakan, jadi dalam hal ini kami akan menghentikan eksekusi
Jika Anda ingin mendapatkan konten file dengan Python, Anda akan menggunakan fungsi file1 = open("text_one.txt)
9, seperti namanya, bacakan untuk kami konten file itu
print(file1.read()) # Results # Why should you learn to write programs? # Writing programs (or programming) is a very creative # and rewarding activity. MORE TEXT .....
Masuk ke mode layar penuh Keluar dari mode layar penuh
Sekarang setelah Anda tahu cara membuka file, dan membacanya, Anda seharusnya dapat membuat fungsi perbandingan tersebut
Pertama pastikan kita bisa membuka kedua file tersebut
try: file1 = open("text_one.txt") file2 = open("text_two.txt") except FileNotFoundError: print("Sorry that file doesn't exist") exit()
Masuk ke mode layar penuh Keluar dari mode layar penuh
Sekarang kita akan menggunakan konten file dan kekuatan set untuk mendapatkan semua kata dari setiap file
Set dengan Python
Himpunan dengan Python, adalah struktur data yang tidak terurut, dengan karakteristik yang sangat khusus (antara lain), tidak mengizinkan elemen berulang 🤫
Kami akan menggunakannya, untuk bisa mendapatkan kata-kata, tanpa mengulang
Membuat satu set dengan Python
Untuk membuat set dengan Python kita akan menggunakan fungsi
print(file1)
# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
0
empty_set = set()
Masuk ke mode layar penuh Keluar dari mode layar penuh
Satu set VS daftar
mylist = list("122333") myset = set("122333") print(mylist) print(myset) # List: # ['1', '2', '2', '3', '3', '3'] # Set # {'3', '2', '1'}
Masuk ke mode layar penuh Keluar dari mode layar penuh
Seperti yang Anda lihat, daftar mencetak semua elemen secara berurutan, tetapi set hanya mencetak elemen yang tidak diulang, dan tidak diurutkan
Mendapatkan kata-kata dari file
Kami akan mengulangi kata-kata dari file dengan for loop, dan menambahkannya dalam satu set untuk setiap file
code ./ _0
Masuk ke mode layar penuh Keluar dari mode layar penuh
Mungkin kode di atas sedikit membingungkan, tapi mari kita lihat sekilas
Pertama kita menginisialisasi, dua set, satu untuk file pertama, yang lain untuk file kedua
Kemudian kami mengulang dengan perulangan for, setiap kata dari file dengan memanggil print(file1) # Result # <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'> 1
Pada bagian itu kami menggunakan metode print(file1) # Result # <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'> _2, yang memberi kami konten file sebagai string, dan kemudian kami menggunakan metode string print(file1) # Result # <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'> 3, yang memberi kami daftar kata-kata dalam file dengan memisahkan string dalam setiap spasi
Jadi pada dasarnya kita mengulang
code ./ _1
Masuk ke mode layar penuh Keluar dari mode layar penuh
Kemudian kami mendapatkan kata, kami membuatnya menjadi huruf kecil untuk menghindari pengulangan kata, dan menambahkannya ke set print(file1) # Result # <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'> 4. Ingat bahwa dalam satu set tidak boleh ada elemen yang diulang, jika kata sudah ada di set, maka itu tidak akan ditambahkan
Kami melakukan hal yang sama untuk kedua file
Menjalankan potongan kode itu, mengembalikan dua set dengan semua kata dari kedua file
Tantangan
Tapi ada masalah dan saya menantang Anda 🔥 untuk menyelesaikannya
Ada beberapa kata yang memiliki tanda baca khusus, misalnya
print(file1)
# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
5 dan
print(file1)
# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
6, dan tugas Anda adalah mencari cara untuk mengganti semua karakter tanda baca, sehingga tidak akan ada kata yang diulang, tetapi dengan tanda baca khusus
Jangkau saya di Twitter, atau Instagram, jika Anda mencapainya
Menggunakan set untuk memotong kata-kata umum
Kami mencari kata-kata umum di set yang baru saja kami buat, dan untuk itu kami akan menggunakan titik-temu
Ya kata itu mungkin terlihat menakutkan karena mungkin Anda pernah melihatnya dalam matematika, tapi jangan khawatir. Persimpangan hanyalah bagian umum dari dua set
Elemen yang berpotongan bisa membosankan 🙄, karena dengan sebagian besar struktur data Anda harus mengulang melalui variabel yang berisi elemen, bandingkan mereka, pilih yang diulang dan tambahkan dalam variabel baru
Tetapi dengan set di Python, kami memiliki fungsi khusus yang melakukan semua itu untuk kami,
print(file1)
# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
7
code ./ _2
Masuk ke mode layar penuh Keluar dari mode layar penuh
Itu dia, sekarang kita bisa mengakses kata-kata umum dari dua file, dalam satu liner
Menulis file dengan Python
Menulis file dengan Python, tidak terlalu sulit. Kami membuka file dalam mode tulis menggunakan print(file1) # Result # <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'> 8
Ini memungkinkan kami untuk menulis ke file yang sudah ada atau jika file tersebut tidak ada, itu membuat yang baru dengan jalur file yang ditentukan
Jadi mari kita buka file gabungan kita
code ./ _3
Masuk ke mode layar penuh Keluar dari mode layar penuh
Ingatlah bahwa setiap kali kita membuka file dalam mode tulis, kita harus menutupnya, setelah melakukan operasi yang diinginkan
Sekarang kita akan menulis semua kata umum ke file
print(file1)
# Result
# <_io.TextIOWrapper name='text_one.txt' mode='r' encoding='UTF-8'>
9 yang baru
code ./ _4
Masuk ke mode layar penuh Keluar dari mode layar penuh
Kita perlu menambahkan string koma di akhir setiap kata, sehingga kita dapat membedakan kata-kata di dalam file
Jika Anda menjalankan kode ini, Anda akan mendapatkan hasil yang diinginkan
code ./ _5
Masuk ke mode layar penuh Keluar dari mode layar penuh
Jika Anda memeriksa file file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' _0 baru, Anda akan melihat semua kata umum antara file file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' 1 dan file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' 2
Selamat 🎉, Anda baru saja membuat algoritme gabungan, dan di dasar algoritme gabungan (Pasti jauh lebih rumit), adalah cara kerja git, untuk membandingkan file kode
Tapi tunggu dulu, kode ini kikuk dan ada banyak bagian di mana kami mengulangi proses yang sama
Jadi mari gunakan kekuatan fungsi, untuk membuat kode kita dapat digunakan kembali dan kode yang lebih dapat ditingkatkan
Pertama mari kita buat fungsi untuk membuka file, dan menangani pengecualian. Fungsi itu akan membutuhkan 2 argumen, yang pertama adalah jalur file, dan yang kedua adalah argumen opsional dengan mode terbuka file
code ./ _6
Masuk ke mode layar penuh Keluar dari mode layar penuh
Kemudian sebuah fungsi yang memungkinkan kita menangkap kata-kata dari sebuah file
code ./ _7
Masuk ke mode layar penuh Keluar dari mode layar penuh
Di sini seperti yang mungkin Anda perhatikan, kami mengambil sebagai parameter jalur file yang akan kami dapatkan kata-katanya, dan mendapatkan penangan file melalui fungsi file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' 3, yang baru saja kami buat
Terakhir mari kita buat sebuah fungsi file1 = open("text_oness.txt")
# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
_4, yang akan melakukan operasi untuk mendapatkan dan memotong kata-kata umum, dan menulis kata-kata itu dalam sebuah file
code ./ _8
Masuk ke mode layar penuh Keluar dari mode layar penuh
Di sini kami menggunakan kekuatan file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' _5 dalam fungsi python, yang memungkinkan kami meneruskan banyak nama file ke fungsi tersebut jika kami ingin menggabungkan lebih dari dua
Anda dapat melihat bahwa saya menggunakan for loop untuk mengulangi argumen file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' 6. Itu karena kami dapat menerima sejumlah nama file sekarang, dan algoritme penggabungan kami menjadi lebih kuat sekarang
Memadatkan kode kita dalam fungsi main()
Sebagai praktik terbaik dalam python, Anda dapat menggunakan fungsi file1 = open("text_oness.txt")
# FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt'
7, yang akan memanggil dan melakukan operasi apa pun yang dilakukan skrip Anda
code ./ _9
Masuk ke mode layar penuh Keluar dari mode layar penuh
Fungsi utama ini memanggil fungsi gabungan dan mengirimkan variabel file1 dan file2 sebagai parameter. Kami juga menentukan parameter file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' 8 yang memberi tahu fungsi penggabungan file mana yang harus ditulisnya
Tapi seperti yang mungkin Anda perhatikan, kami belum memanggil fungsi apa pun, jadi mari kita panggil fungsi utama
file1 = open("text_one.txt) _0
Masuk ke mode layar penuh Keluar dari mode layar penuh
Variabel file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' _9 layak mendapatkan posting blog lain, tetapi pada dasarnya di sini Anda memberi tahu python
- Hai bung 🥸, jika ini adalah file python yang Anda jalankan dari terminal, jalankan fungsi file1 = open("text_oness.txt") # FileNotFoundError: [Errno 2] No such file or directory: 'text_oness.txt' 7
Jadi kode terakhir dari algoritma keren ini adalah ini
file1 = open("text_one.txt) _1
Masuk ke mode layar penuh Keluar dari mode layar penuh
Kesimpulan
Dalam tutorial ini Anda berlatih
- Penanganan file dengan Python
- Set dan daftar dengan Python
- Iterasi dengan for loop
- Definisi fungsi dan penggunaan
- Praktik terbaik fungsi utama Python
Jika Anda menemukan kesalahan dalam tutorial ini, jangan ragu untuk menghubungi saya, atau buat permintaan tarik di repo Github