Python membaca dua file baris demi baris

Langsung saja kita ke contoh kodenya. Berpura-puralah Anda memiliki file bernama contoh. txt di direktori saat ini. Jika tidak, buat saja, lalu isi dengan garis-garis ini dan simpan

hello world
and now
I say
goodbye

Berikut cuplikan singkat kode Python untuk membuka file itu dan mencetak isinya ke layar - perhatikan bahwa kode Python ini harus dijalankan di direktori yang sama dengan file

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
1 ada di

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()

Apakah itu tampak terlalu rumit?

myfile = open("example.txt")
print(myfile.read())
myfile.close()

Inilah cara membaca file itu, baris demi baris, menggunakan for-loop

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
_

(Catatan. Jika Anda sudah mendapatkan FileNotFoundError - itu hampir bisa diharapkan. Teruslah membaca. )

Masih tampak terlalu rumit? . Tidak hanya itu, kita juga harus menutup file secara manual

Sekarang mari kita lakukan langkah demi langkah ini

Untuk membuka file, kita cukup menggunakan metode

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
2 dan meneruskan, sebagai argumen pertama, nama file

myfile = open("example.txt")
_

Kelihatannya cukup mudah, jadi mari lompat ke beberapa kesalahan umum

Cara mengacaukan saat membuka file

Ini kemungkinan kesalahan paling umum yang akan Anda dapatkan saat mencoba membuka file

FileNotFoundError: [Errno 2] No such file or directory: 'SOME_FILENAME'

Nyatanya, saya telah melihat siswa membuang waktu puluhan jam untuk mencoba melewati pesan kesalahan ini, karena mereka tidak berhenti membacanya. Jadi, bacalah. Apa artinya

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
_3?

Coba letakkan spasi di tempat terjadinya kapitalisasi

  File Not Found Error
_

Anda akan mendapatkan kesalahan ini karena Anda mencoba membuka file yang sebenarnya tidak ada. Kadang-kadang, itu salah ketik sederhana, mencoba

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
2 file bernama
myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
5 tetapi secara tidak sengaja salah mengejanya sebagai
myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
6

Tapi lebih sering, itu karena Anda tahu ada file di bawah nama file tertentu, seperti

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
5 – tapi bagaimana kode Python Anda tahu di mana file itu?

Itu pertanyaan yang cukup rumit. Tetapi langkah pertama untuk tidak membuang waktu Anda adalah jika Anda pernah melihat kesalahan ini, hentikan apa pun yang Anda lakukan. Jangan men-tweak for-loop Anda yang berbelit-belit. Jangan mencoba memasang pustaka Python baru. Jangan nyalakan ulang komputer Anda, lalu jalankan kembali skrip untuk melihat apakah kesalahan secara ajaib memperbaiki dirinya sendiri

Kesalahan

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
_3 terjadi karena Anda juga tidak tahu di mana file sebenarnya berada di komputer Anda. Atau, bahkan jika Anda melakukannya, Anda tidak tahu bagaimana cara memberi tahu program Python Anda di mana letaknya. Jangan mencoba memperbaiki bagian lain dari kode Anda yang tidak terkait dengan menentukan nama file atau jalur

Cara memperbaiki FileNotFoundError

Inilah perbaikan yang pasti. pastikan file tersebut benar-benar ada

Mari kita mulai dari awal dengan membuat kesalahan. Di shell sistem Anda (mis. e. Terminal), ubah ke folder Desktop Anda

$ cd ~/Desktop

Sekarang, jalankan ipython

$ ipython

Dan sekarang Anda berada di juru bahasa Python interaktif, coba buka nama file yang Anda tahu tidak ada di Desktop Anda, lalu nikmati pesan kesalahannya

>>> myfile = open("whateverdude.txt")
myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
_0

Sekarang buat file secara manual di Desktop Anda, menggunakan Sublime Text 3 atau apa pun yang Anda inginkan. Tambahkan beberapa teks ke dalamnya, lalu simpan

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
1

Lihat dan buktikan sendiri bahwa file ini benar-benar ada di folder Desktop Anda

Python membaca dua file baris demi baris

Oke, sekarang beralih kembali ke shell Python interaktif Anda (mis. e. ipython), yang Anda buka setelah mengubah ke folder Desktop (mis. e.

myfile = open("example.txt")
_0). Jalankan kembali perintah
myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
_2 itu, yang menghasilkan FileNotFoundError

>>> myfile = open("whateverdude.txt")

Mudah-mudahan, Anda seharusnya tidak mendapatkan kesalahan

Tapi apakah objek yang ditunjuk oleh variabel

myfile = open("example.txt")
_2 itu?

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
_3

Dan apa itu? . e.

myfile = open("example.txt")
_5

Gunakan pelengkapan otomatis Tab (mis. e. ketik

myfile = open("example.txt")
_6) untuk mendapatkan daftar metode dan atribut yang ada untuk objek
myfile = open("example.txt")
2

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
_4

Yah, kita bisa melakukan lebih banyak dengan file daripada hanya

myfile = open("example.txt")
8 dari mereka. Tapi mari kita fokus membaca saja untuk saat ini

Dengan asumsi variabel

myfile = open("example.txt")
_2 menunjuk ke beberapa jenis objek file, ini adalah cara Anda membacanya

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
5

Apa yang ada di dalam variabel

FileNotFoundError: [Errno 2] No such file or directory: 'SOME_FILENAME'
_0 itu?

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
6

Itu hanya sebuah string. Yang artinya tentu saja kita bisa mencetaknya

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
7

Atau menghitung jumlah karakter

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
_8

Atau cetak dengan huruf besar semua

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()
_9

Dan itu semua ada untuk membaca dari file yang telah dibuka

Sekarang ke kesalahan

Cara mengacaukan saat membaca dari file

Inilah kesalahan yang sangat, sangat umum

myfile = open("example.txt")
print(myfile.read())
myfile.close()
0

Keluaran kesalahan

myfile = open("example.txt")
print(myfile.read())
myfile.close()
1

Perhatikan baik-baik bahwa ini bukan FileNotFoundError. Ini adalah AttributeError – yang memang tidak terlalu jelas – tetapi baca bagian selanjutnya

myfile = open("example.txt")
print(myfile.read())
myfile.close()
2

Pesan kesalahan langsung ke intinya. objek

myfile = open("example.txt")
_5 – i. e. string literal, e. g. sesuatu seperti
FileNotFoundError: [Errno 2] No such file or directory: 'SOME_FILENAME'
_3 tidak memiliki atribut
FileNotFoundError: [Errno 2] No such file or directory: 'SOME_FILENAME'
4

Meninjau kembali kode yang salah

myfile = open("example.txt")
print(myfile.read())
myfile.close()
0

Jika

FileNotFoundError: [Errno 2] No such file or directory: 'SOME_FILENAME'
_5 menunjuk ke "contoh. txt", maka
FileNotFoundError: [Errno 2] No such file or directory: 'SOME_FILENAME'
_5 hanyalah objek
myfile = open("example.txt")
5

Dengan kata lain, nama file bukanlah objek file. Berikut adalah contoh yang lebih jelas dari kode yang salah

myfile = open("example.txt")
print(myfile.read())
myfile.close()
_4

Dan untuk mengalahkan poin tentang kepala

myfile = open("example.txt")
print(myfile.read())
myfile.close()
5

Mengapa ini merupakan kesalahan umum? . Antarmuka grafis mengaburkan proses – dan untuk alasan yang bagus. Siapa yang peduli apa yang terjadi selama file saya terbuka saat saya mengklik dua kali

Sayangnya, kita harus berhati-hati saat mencoba membaca file secara terprogram. Membuka file adalah operasi diskrit dari membacanya

  • Anda membuka file dengan meneruskan nama filenya – e. g.
    myfile = open("example.txt")
    for line in myfile:
        print(line)
    myfile.close()
    
    _1 – ke dalam fungsi
    myfile = open("example.txt")
    for line in myfile:
        print(line)
    myfile.close()
    
    2. Fungsi
    myfile = open("example.txt")
    for line in myfile:
        print(line)
    myfile.close()
    
    2 mengembalikan objek file
  • Untuk benar-benar membaca isi file, Anda memanggil metode read() objek file itu

Sekali lagi, ini kodenya, dengan cara yang sedikit lebih bertele-tele

myfile = open("example.txt")
print(myfile.read())
myfile.close()
6

Objek file juga memiliki metode

  File Not Found Error
_1, yang secara formal dibersihkan setelah file dibuka dan memungkinkan program lain mengaksesnya dengan aman. Sekali lagi, itu adalah detail tingkat rendah yang tidak pernah Anda pikirkan dalam komputasi sehari-hari. Faktanya, ini adalah sesuatu yang mungkin akan Anda lupakan dalam konteks pemrograman, karena tidak menutup file tidak akan merusak apa pun secara otomatis (tidak sampai kita mulai melakukan jenis operasi file yang jauh lebih rumit, setidaknya…). Biasanya, segera setelah skrip selesai, semua file yang tidak ditutup akan ditutup secara otomatis

Namun, saya suka menutup file secara eksplisit – tidak hanya untuk menjaga keamanan – tetapi juga membantu memperkuat konsep objek file tersebut

Salah satu keuntungan dari masuk ke detail pembukaan dan membaca file tingkat rendah adalah bahwa kita sekarang memiliki kemampuan untuk membaca file baris demi baris, daripada satu potongan besar. Sekali lagi, untuk membaca file sebagai satu potongan besar konten, gunakan metode

myfile = open("example.txt")
8

myfile = open("example.txt")
print(myfile.read())
myfile.close()
_7

Sepertinya bukan masalah besar sekarang, tapi itu karena

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
1 mungkin hanya berisi beberapa baris. Tetapi ketika kita berurusan dengan file yang sangat besar – seperti semua 3. 3 juta catatan setiap orang yang telah menyumbangkan lebih dari $200 ke satu U. S. panitia kampanye presiden pada tahun 2012 atau semua orang yang pernah mengunjungi Gedung Putih – membuka dan membaca file sekaligus terasa lebih lambat. Dan bahkan mungkin crash komputer Anda

Jika Anda bertanya-tanya mengapa perangkat lunak spreadsheet, seperti Excel, memiliki batas baris (kira-kira 1.000.000), itu karena sebagian besar pengguna ingin mengoperasikan file data sekaligus. Namun, banyak file data menarik yang terlalu besar untuk itu. Kami akan membahas skenario tersebut nanti di kuartal ini

Untuk saat ini, seperti inilah biasanya tampilan membaca baris demi baris

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()
_

Karena setiap baris dalam file teks memiliki karakter baris baru (yang direpresentasikan sebagai

  File Not Found Error
4 tetapi biasanya "tidak terlihat"), menjalankan fungsi print() akan membuat keluaran spasi ganda, karena print() menambahkan baris baru ke apa yang dihasilkannya (i. e. pikirkan kembali program
  File Not Found Error
_5 asli Anda)

Untuk menghilangkan efek itu, panggil metode

  File Not Found Error
_6, yang termasuk dalam objek
myfile = open("example.txt")
5 dan hapus karakter spasi putih dari sisi kiri dan kanan string teks

myfile = open("example.txt")
print(myfile.read())
myfile.close()
_9

Dan tentu saja, Anda dapat memperkeras suara dengan fungsi

  File Not Found Error
8 yang bagus

myfile = open("example.txt")
print(myfile.read())
myfile.close()
_9

Itu saja untuk saat ini. Kami belum membahas cara menulis ke file (yang merupakan operasi yang jauh lebih berbahaya) – saya menyimpannya untuk pelajaran terpisah. Tetapi cukup untuk mengetahui bahwa ketika berurusan dengan file sebagai programmer, kita harus lebih eksplisit dan spesifik dalam langkah-langkahnya.

Bagaimana cara membandingkan dua file dalam Python baris demi baris?

Metode 1. Menggunakan unified_diff() . Untuk mendapatkan perbedaan menggunakan pustaka difflib, kita harus memanggil fungsi unified_diff() untuk perbandingan ini. Parameter. file1. Daftar String seperti file_1_text.

Bagaimana cara membaca dua file sekaligus di Python?

Langkah-langkah yang digunakan untuk membuka banyak file secara bersamaan dengan Python. .
Kedua file dibuka dengan metode open() menggunakan nama yang berbeda untuk masing-masing
Isi file dapat diakses menggunakan metode readline()
Operasi baca/tulis yang berbeda dapat dilakukan pada konten file-file ini

Bagaimana cara membandingkan dua file baris demi baris?

Gunakan perintah diff untuk membandingkan file teks . Itu dapat membandingkan file tunggal atau isi direktori. Ketika perintah diff dijalankan pada file biasa, dan ketika membandingkan file teks di direktori yang berbeda, perintah diff memberi tahu baris mana yang harus diubah dalam file agar cocok.

Bagaimana cara membaca banyak file dari jalur dengan Python?

Impor modul OS di notebook Anda. Tentukan jalur tempat file teks berada di sistem Anda. Buat daftar file dan ulangi untuk mengetahui apakah semuanya memiliki ekstensi yang benar atau tidak. Baca file menggunakan fungsi yang ditentukan dalam modul