Friday 11 August 2017

Pilihan Python Read Text File As Binary


File Python I O. Bab ini mencakup semua fungsi dasar IO yang tersedia dengan Python Untuk lebih banyak fungsi, lihat dokumentasi standar Python. Cetak ke Layar. Cara termudah untuk menghasilkan output menggunakan pernyataan cetak di mana Anda dapat melewati nol atau lebih Ekspresi dipisahkan dengan koma Fungsi ini mengubah ekspresi yang Anda berikan ke string dan menulis hasilnya ke output standar sebagai berikut. Ini menghasilkan hasil berikut pada layar standar Anda. Masukan Keyboard Memasukkan. Python menyediakan dua fungsi built-in untuk membaca baris Teks dari input standar, yang secara default berasal dari keyboard Fungsi ini adalah fungsi rawinput. Fungsi rawinput prompt membaca satu baris dari input standar dan mengembalikannya sebagai string yang menghapus baris baru yang baru. Ini meminta Anda untuk memasukkan string dan Akan menampilkan string yang sama di layar Ketika saya mengetik Hello Python, outputnya seperti this. The input Function. The fungsi input prompt setara dengan rawinput, kecuali Yang mengasumsikan input adalah ekspresi Python yang valid dan mengembalikan hasil yang dievaluasi ke Anda. Ini akan menghasilkan hasil berikut terhadap input yang dimasukkan. File Penutupan dan Penutupan. Sampai sekarang, Anda telah membaca dan menulis ke input standar dan keluaran Sekarang , Kita akan melihat bagaimana menggunakan file data sebenarnya. Python menyediakan fungsi dasar dan metode yang diperlukan untuk memanipulasi file secara default. Anda dapat melakukan sebagian besar manipulasi file menggunakan objek file. Fungsi terbuka. Sebelum Anda dapat membaca atau menulis file, Anda Harus membukanya menggunakan fungsi built-in Python built-in Fungsi ini membuat objek file, yang akan digunakan untuk memanggil metode pendukung lain yang terkait dengannya. Berikut adalah parameter details. filename Argumen nama file adalah nilai string yang berisi nama File yang ingin Anda akses. accessmode Accessmode menentukan mode di mana file harus dibuka, yaitu membaca, menulis, menambahkan, dll Daftar lengkap nilai yang mungkin diberikan di bawah ini dalam tabel Ini adalah pilihan Parameter ional dan mode akses file default dibaca r. buffering Jika nilai buffer diset ke 0, tidak terjadi buffering Jika nilai buffering adalah 1, line buffering dilakukan saat mengakses file Jika Anda menentukan nilai buffer sebagai bilangan bulat Lebih besar dari 1, maka aksi penyangga dilakukan dengan ukuran buffer yang ditunjukkan Jika negatif, ukuran buffer adalah default default sistem. Berikut adalah daftar mode yang berbeda untuk membuka file.7 Input dan Output. Ada beberapa cara untuk Menyajikan output dari data program dapat dicetak dalam bentuk yang dapat dibaca manusia, atau ditulis ke file untuk penggunaan masa depan Bab ini akan membahas beberapa kemungkinan.7 1 Format Output yang Lebih Baik. Sejauh ini, kami telah menemukan dua cara untuk menulis nilai. Pernyataan ekspresi dan pernyataan cetak Cara ketiga adalah dengan menggunakan metode penulisan objek file, file output standar dapat dirujuk sebagai Lihat Referensi Perpustakaan untuk informasi lebih lanjut mengenai hal ini. Seringkali Anda menginginkan lebih banyak kendali atas f Ormatting output Anda daripada hanya mencetak nilai yang dipisahkan oleh ruang Ada dua cara untuk memformat output Anda dengan cara pertama adalah dengan melakukan semua string yang menangani diri Anda dengan menggunakan pengetikan dan operasi penggabungan string Anda dapat membuat tata letak yang dapat Anda bayangkan Jenis string memiliki beberapa metode Yang melakukan operasi yang berguna untuk string padding ke lebar kolom tertentu ini akan dibahas segera Cara kedua adalah dengan menggunakan metode ini. Modul string berisi kelas Template yang menawarkan cara lain untuk mengganti nilai menjadi string. Salah satu pertanyaan tetap ada, tentu saja Bagaimana Anda mengkonversikan nilai ke untaian Beruntung, Python memiliki cara untuk mengubah nilai apapun menjadi string yang lolos ke fungsi repr atau str. Fungsi str dimaksudkan untuk mengembalikan representasi nilai yang cukup mudah dibaca manusia, sedangkan repr dimaksudkan untuk Menghasilkan representasi yang bisa dibaca oleh penafsir atau akan memaksa SyntaxError jika tidak ada sintaks yang setara. Untuk objek yang tidak memiliki representa tertentu. Banyak nilai, seperti angka atau struktur seperti daftar dan kamus, memiliki representasi yang sama dengan menggunakan fungsi String dan bilangan floating point, khususnya, memiliki dua representasi yang berbeda. Berikut adalah dua Cara untuk menulis tabel kotak dan kubus. Perhatikan bahwa pada contoh pertama, satu spasi di antara setiap kolom ditambahkan dengan cara mencetaknya bekerja. Selalu menambahkan spasi di antara argumennya. Contoh ini menunjukkan metode objek string, yang dengan benar membenarkan string di bidang dengan lebar yang diberikan oleh Padding itu dengan spasi di sebelah kiri Ada metode yang serupa dan Metode ini tidak menulis apapun, mereka baru mengembalikan string baru Jika string input terlalu panjang, mereka tidak akan memotongnya, tapi mengembalikannya tidak berubah ini akan mengacaukan kolom Anda. - tetapi itu biasanya lebih baik daripada alternatifnya, yang akan berbohong tentang nilai Jika Anda benar-benar ingin pemotongan, Anda selalu dapat menambahkan operasi irisan, seperti pada. Ada metode lain, yang membungkuk string angka di sebelah kiri dengan nol Mengerti tentang tanda plus dan minus. Penggunaan dasar metode terlihat seperti ini. Tanda kurung dan karakter di dalamnya disebut bidang format diganti dengan objek yang dilewatkan ke metode Angka dalam tanda kurung mengacu pada posisi objek. Dilewatkan ke metode. Jika argumen kata kunci digunakan dalam metode ini, nilai mereka dirujuk dengan menggunakan nama argumen. Argumen kata kunci dan kata kunci dapat digabungkan secara sewenang-wenang.7 2 Membaca dan Menulis File. open mengembalikan objek file, dan Yang paling umum digunakan dengan dua argumen nama file terbuka, mode. Argumen pertama adalah string yang berisi nama file Argumen kedua adalah string lain yang berisi beberapa karakter yang menjelaskan bagaimana file tersebut akan digunakan. Mode bisa jadi r ketika file tersebut hanya akan Dibaca, w karena hanya menulis file yang ada dengan nama yang sama akan dihapus, dan file yang terbuka untuk menambahkan data apapun yang ditulis ke file secara otomatis ditambahkan ke akhir r membuka file untuk pembacaan dan penulisan Argumen mode adalah R opsional akan diasumsikan jika disingkirkan. Pada Windows, b ditambahkan ke mode untuk membuka file dalam mode biner, jadi ada juga mode seperti rb wb dan rb Python pada Windows membuat perbedaan antara teks dan file biner akhir-o Karakter f-line pada file teks secara otomatis sedikit berubah saat data dibaca atau ditulis. Modifikasi di balik layar untuk mengajukan data baik untuk file teks ASCII, namun akan merusak data biner seperti pada file JPEG atau EXE. Sangat berhati-hati. Untuk menggunakan mode biner saat membaca dan menulis file semacam itu Pada Unix, tidak ada salahnya menambahkan mode ke dalam mode, jadi Anda dapat menggunakannya secara independen untuk semua file biner.7 2 1 Metode Objek File. Sampel lainnya Pada bagian ini akan diasumsikan bahwa objek file yang disebut f telah dibuat. Untuk membaca isi file, panggilan yang membaca beberapa jumlah data dan mengembalikannya sebagai ukuran string adalah argumen numerik opsional Bila ukuran diabaikan atau negatif, maka Seluruh isi file akan dibaca dan dikembalikan itu masalah Anda jika file dua kali lebih besar dari memori mesin Anda Jika tidak, paling banyak ukuran byte dibaca dan dikembalikan Jika akhir file telah tercapai, akan kembali kosong. tali. Membaca satu baris dari file karakter newline n tersisa di akhir string, dan hanya dihilangkan pada baris terakhir file jika file tidak berakhir di newline Ini membuat nilai kembali tidak ambigu jika mengembalikan yang kosong. String, akhir file telah tercapai, sedangkan baris kosong diwakili oleh string na yang hanya berisi satu baris baru. Untuk membaca baris dari sebuah file, Anda bisa melompati objek file Ini adalah memori yang efisien, cepat, dan mengarah ke Kode sederhana. Jika Anda ingin membaca semua baris file dalam daftar Anda juga dapat menggunakan daftar f atau. Menulis isi string ke file, mengembalikan None. To menulis sesuatu selain string, itu perlu dikonversi ke string terlebih dahulu. Mengembalikan sebuah integer yang memberi posisi objek file saat ini dalam file, diukur dalam byte dari awal file Untuk mengubah posisi objek file, gunakanlah dari mana Posisi dihitung dari menambahkan offset ke titik referensi dimana titik referensi dipilih oleh Argumen fromwhat A dari berapa nilai 0 yang diambil dari awal file, 1 menggunakan posisi file saat ini, dan 2 menggunakan akhir file sebagai titik acuan dari apa yang dapat diabaikan dan default ke 0, dengan menggunakan awal file Sebagai titik acuan. Ketika Anda selesai melakukan dengan sebuah file, panggil untuk menutupnya dan membebaskan sumber daya sistem yang diambil oleh file yang terbuka Setelah memanggil upaya untuk menggunakan objek file secara otomatis akan gagal. Ini adalah praktik yang baik untuk menggunakan kata kunci Ketika berhadapan dengan objek file Ini memiliki keuntungan bahwa file tersebut benar ditutup setelah selesai diupdate, bahkan jika pengecualian dinaikkan di jalan. Ini juga jauh lebih pendek daripada menulis percobaan yang setara - akhirnya blok. Objek kosong S memiliki beberapa metode tambahan, seperti isatty dan truncate yang kurang sering digunakan untuk berkonsultasi dengan Library Reference untuk panduan lengkap untuk mengajukan objek.7 2 2 Menyimpan data terstruktur dengan json. Strings dapat dengan mudah ditulis dan dibaca dari sebuah file Bilangan Sedikit lebih banyak usaha, karena metode baca hanya mengembalikan string, yang harus dilewatkan ke fungsi seperti int yang membutuhkan string seperti 123 dan mengembalikan nilai numeriknya 123 Bila Anda ingin menyimpan tipe data yang lebih kompleks seperti daftar bersarang dan kamus , Parsing dan serialisasi dengan tangan menjadi rumit. Daripada pengguna terus-menerus menulis dan debugging kode untuk menyimpan tipe data yang rumit ke file, Python memungkinkan Anda untuk menggunakan format pertukaran data populer yang disebut JSON JavaScript Object Notation Modul standar yang disebut json dapat menggunakan data Python. Hirarki, dan mengkonversikannya ke representasi string proses ini disebut serializing Rekonstruksi data dari representasi string disebut deserializ Ing Antara serialisasi dan deserializing, string yang mewakili objek mungkin telah disimpan dalam file atau data, atau dikirim melalui koneksi jaringan ke mesin jarak jauh. Format JSON biasanya digunakan oleh aplikasi modern untuk memungkinkan pertukaran data Banyak programmer sudah Akrab dengan itu, yang membuatnya menjadi pilihan yang baik untuk interoperabilitas. Jika Anda memiliki objek x Anda dapat melihat representasi string JSON-nya dengan baris kode sederhana. Varian lain dari fungsi dumps, yang disebut dump hanya serializes objek ke file Jadi Jika f adalah objek file yang dibuka untuk penulisan, kita bisa melakukan ini. Untuk memecahkan kode objek lagi, jika f adalah objek file yang telah dibuka untuk dibaca. Teknik serialisasi sederhana ini bisa menangani daftar dan kamus, tapi serialisasi contoh kelas sewenang-wenang di JSON membutuhkan sedikit usaha ekstra Referensi untuk modul json berisi penjelasan tentang this. pickle - modul acar. Kompatibel dengan JSON acar adalah protokol yang memungkinkan serialisasi o Objek Python yang rumit secara kompleks Seperti itu, ini khusus untuk Python dan tidak dapat digunakan untuk berkomunikasi dengan aplikasi yang ditulis dalam bahasa lain. Juga tidak aman secara default karena data acar yang menarik berasal dari sumber yang tidak tepercaya dapat mengeksekusi kode acak, jika data dibuat oleh Penyerang yang terampil. Membaca dan Menulis File dengan Python. Ketika Anda kembali bekerja dengan Python, Anda tidak perlu mengimpor perpustakaan untuk membaca dan menulis file Ini ditangani secara native dalam bahasa, meskipun dengan cara yang unik. Hal pertama Anda perlu lakukan adalah menggunakan fungsi built-in Python built-in untuk mendapatkan objek file. Fungsi terbuka membuka file Ini s simple. When Anda menggunakan fungsi terbuka, ia mengembalikan sesuatu yang disebut objek file Objek file berisi metode dan atribut. Yang dapat digunakan untuk mengumpulkan informasi tentang file yang Anda buka Mereka juga dapat digunakan untuk memanipulasi file tersebut. Misalnya, atribut mode dari objek file memberi tahu Anda mode mana file dibuka dan atribut nama memberi tahu Anda nama file yang telah dibuka objek file. Anda harus mengerti bahwa file dan file objek adalah dua hal yang sepenuhnya terpisah namun terkait. Apa yang mungkin Anda ketahui sebagai file sedikit berbeda dengan Python. Pada Windows, misalnya, File dapat berupa item dimanipulasi, diedit atau dibuat oleh pengguna OS Itu berarti file dapat berupa gambar, dokumen teks, file executable, dan sebagian besar file yang diorganisir dengan menyimpannya di folder individual. Dengan Python, sebuah file dikategorikan baik Teks atau biner, dan perbedaan antara kedua jenis file itu penting. File teks terstruktur sebagai urutan garis, di mana setiap baris mencakup urutan karakter Inilah yang Anda tahu sebagai kode atau sintaks. Setiap baris diakhiri dengan khusus. Karakter, yang disebut karakter EOL atau End of Line Ada beberapa tipe, tapi yang paling umum adalah koma atau karakter baris baru. Ini mengakhiri garis saat ini dan memberitahu penafsir yang baru telah dimulai. Karakter backslash juga bisa digunakan, dan itu Memberitahu int Erpreter bahwa karakter berikutnya yang mengikuti garis miring harus diperlakukan sebagai baris baru Karakter ini berguna saat Anda tidak ingin memulai baris baru dalam teks itu sendiri tetapi dalam kode. File biner adalah semua jenis file yang bukan merupakan File teks Karena sifatnya, file biner hanya bisa diproses oleh aplikasi yang mengetahui atau memahami struktur file. Dengan kata lain, aplikasi harus bisa membaca dan menafsirkan binary. Open Function. In untuk membuka file untuk penulisan. Atau gunakan dengan Python, Anda harus bergantung pada built-in open function. Seperti yang dijelaskan di atas, open akan mengembalikan objek file, jadi paling sering digunakan dengan dua argumen. Argumen tidak lebih dari nilai yang telah diberikan untuk Sebuah fungsi, yang diteruskan saat Anda menamakannya Jadi, misalnya, jika kita mendeklarasikan nama file sebagai File Uji, nama itu akan dianggap sebagai argumen. Sintaks untuk membuka objek file dengan Python adalah argumen kedua Anda. Lihat mode memberitahu penafsir dan pengembang cara mana t File dia akan digunakan. Termasuk argumen mode bersifat opsional karena nilai default r akan diasumsikan jika diabaikan Nilai r adalah mode baca, yang hanya satu dari sekian banyak. Mode Baca yang digunakan saat file tersebut berada. Hanya read. w Write mode yang digunakan untuk mengedit dan menulis informasi baru ke file file yang ada dengan nama yang sama akan terhapus saat mode ini diaktifkan. Mode Appending, yang digunakan untuk menambahkan data baru sampai akhir File yang merupakan informasi baru secara otomatis diubah menjadi end. r mode read and write khusus, yang digunakan untuk menangani kedua tindakan saat bekerja dengan file. Jadi, mari kita lihat contoh cepat. Potongan ini membuka file Bernama workfile dalam mode penulisan sehingga kita bisa melakukan perubahan padanya Informasi terkini yang tersimpan dalam file juga ditampilkan atau dicetak agar bisa kita lihat. Setelah ini selesai, Anda bisa melanjutkan untuk memanggil fungsi objek. Dua fungsi yang paling umum Dibaca dan ditulis. Buat file teks. Untuk mendapatkan lebih banyak famili Ar dengan file teks dengan Python, mari kita buat sendiri dan lakukan beberapa latihan tambahan. Dengan menggunakan editor teks sederhana, mari membuat file Anda dapat menamainya sesuai keinginan Anda, dan lebih baik menggunakan sesuatu yang akan Anda identifikasi. Tujuan dari tutorial ini, bagaimanapun, kita akan memanggilnya. Buatlah file dan biarkan kosong. Untuk memanipulasi file, tuliskan yang berikut di lingkungan Python Anda yang bisa Anda copy dan paste jika Anda suka. Tentu, jika Anda Buka file teks atau lihat dengan menggunakan Python Anda hanya akan melihat teks yang kami beri tahu pada penerjemah untuk ditambahkan. Baca File Teks dengan Python. Sebenarnya ada beberapa cara untuk membaca file teks dengan Python, bukan hanya satu. Anda perlu mengekstrak string yang berisi semua karakter dalam file, Anda dapat menggunakan metode berikut. Kode lengkap untuk bekerja dengan metode ini akan terlihat seperti keluaran this. The dari perintah itu akan menampilkan semua teks di dalam file, Teks yang sama yang kami sampaikan kepada penerjemah untuk ditambahkan sebelumnya Tidak perlu menulis semuanya o Ut lagi, tapi jika Anda harus tahu, semuanya akan ditampilkan kecuali untuk garis kucing. Cara lain untuk membaca file adalah dengan memanggil sejumlah karakter tertentu. Misalnya, dengan kode berikut penafsir akan membaca lima karakter pertama dari Data yang tersimpan dan mengembalikannya sebagai string. Notice bagaimana kita menggunakan metode yang sama, hanya saja saat ini kita menentukan jumlah karakter yang akan di proses. Output untuk ini akan terlihat seperti. Jika Anda ingin membaca file baris demi baris sama seperti Untuk menarik isi keseluruhan file sekaligus maka Anda menggunakan fungsi readline. Mengapa Anda menggunakan sesuatu seperti ini. Katakanlah Anda hanya ingin melihat baris pertama dari file atau yang ketiga Anda akan menjalankan fungsi readline sebanyak mungkin. Kali mungkin untuk mendapatkan data yang Anda cari. Setiap kali Anda menjalankan metode ini, ia akan mengembalikan serangkaian karakter yang berisi satu baris informasi dari file. Ini akan mengembalikan baris pertama file tersebut, seperti juga. Jika kita ingin mengembalikan hanya baris ketiga dalam file tersebut, Kita akan menggunakan ini. Tapi bagaimana jika kita ingin mengembalikan setiap baris dalam file, benar dipisahkan Anda akan menggunakan fungsi yang sama, hanya dalam bentuk baru Ini disebut fungsi. Output yang akan Anda dapatkan dari ini adalah. Tidak bagaimana bagaimana masing-masing Line dipisahkan sesuai Perhatikan bahwa ini bukan cara ideal untuk menunjukkan kepada pengguna konten dalam file Tapi sangat bagus bila Anda ingin mengumpulkan informasi dengan cepat untuk penggunaan pribadi selama pengembangan atau recall. Looping pada objek file. Bila Anda ingin membaca Atau mengembalikan semua baris dari sebuah file dalam memori yang lebih efisien, dan dengan cepat, Anda dapat menggunakan metode loop over Keuntungan untuk menggunakan metode ini adalah kode yang terkait sederhana dan mudah dibaca. Ini akan kembali. Lihat bagaimana Jauh lebih sederhana daripada metode sebelumnya. Dengan menggunakan Metode Menulis File. Satu hal yang akan Anda perhatikan tentang metode penulisan file adalah hanya memerlukan satu parameter, yaitu string yang ingin Anda tulis. Metode ini digunakan untuk menambahkan Informasi atau konten ke file yang ada Untuk memulai baris baru setelah Anda menulis data ke file, Anda dapat menambahkan karakter EOL. Jelas, ini akan mengubah file kami saat ini untuk memasukkan dua baris teks baru. Tidak perlu menunjukkan output. Menulis File. Ketika Anda Setelah selesai bekerja, Anda dapat menggunakan perintah fh untuk mengakhiri hal-hal Apa yang terjadi dengan menutup file ini sepenuhnya, menghentikan penggunaan sumber daya, pada gilirannya membebaskannya dari sistem yang akan digunakan di tempat lain. Penting untuk dipahami bahwa ketika Anda menggunakan fh Metode, upaya lebih lanjut untuk menggunakan objek file akan gagal. Tidak seperti bagaimana kita menggunakan ini dalam beberapa contoh kita untuk mengakhiri interaksi dengan sebuah file Ini adalah praktik yang baik. Penanganan Cepat di Dunia Nyata. Untuk membantu Anda lebih memahami beberapa Metode yang dibahas di sini, kami akan menawarkan beberapa contoh penggunaannya di dunia nyata Jangan ragu untuk menyalin kode dan mencobanya sendiri di juru bahasa Python memastikan Anda memiliki file bernama yang dibuat dan dapat diakses terlebih dahulu. File teks. Membaca file teks. Untuk membaca Satu file teks satu baris dalam satu waktu. Pertama kali masuk ke developerWorks, profil dibuat untuk Anda Pilih informasi di nama profil, kawasan negara, dan perusahaan Anda akan ditampilkan ke publik dan akan menyertai konten apa pun yang Anda poskan Anda dapat memperbarui Akun IBM Anda kapan saja. Semua informasi yang dikirimkan aman. Saat pertama kali masuk ke developerWorks, profil dibuat untuk Anda, jadi Anda harus memilih nama tampilan Nama tampilan Anda menyertai konten yang Anda poskan di pengembang. Harap pilih Nama tampilan antara 3-31 karakter Nama tampilan Anda harus unik di komunitas pengembangWorks dan seharusnya tidak menjadi alamat email Anda karena alasan privasi. Semua informasi yang disampaikan aman. Temukan Python, Bagian 8 Membaca dan menulis data menggunakan input dan output Python Fungsionalitas. Lebih lanjut tentang cara menggunakan kamus secara efektif. Robert Brunner, Ilmuwan Riset NCSA, Asisten Profesor Astronomi, Universitas Illinois, Urbana-Champaign. Robert J Brunner adalah seorang Research Ilmuwan di National Center for Supercomputing Applications dan Asisten Profesor Astronomi di University of Illinois, Urbana-Champaign Dia telah menerbitkan beberapa buku dan sejumlah artikel dan tutorial mengenai berbagai topik yang dapat Anda dapatkan di Enummary. Pada artikel ini , Anda belajar cara bekerja dengan file Pertama, kami meninjau cara sederhana untuk mengeluarkan data dengan Python, menggunakan pernyataan cetak, kemudian belajar tentang objek file, yang digunakan oleh program Python untuk membaca dan menulis data ke file Modus yang berbeda. Dengan mana file dapat dibuka ditunjukkan, dan artikel diakhiri dengan menunjukkan bagaimana membaca dan menulis file biner. Date 03 Jan 2006 Level Intermediate. Pada artikel sebelumnya di seri Discover Python, Anda belajar tentang tipe data Python dasar. Dan beberapa tipe data kontainer, seperti string tupel dan daftar Artikel lain membahas fitur kondisional dan perulangan bahasa Python dan bagaimana mereka bekerja sama dengan tipe data wadah S untuk menyederhanakan tugas pemrograman Langkah dasar terakhir yang terlibat dalam menulis program adalah dengan membaca data dari dan menulis data ke file Setelah membaca artikel ini, Anda akan dapat memeriksa mempelajari keterampilan ini dari daftar tugas Anda. Sepanjang rangkaian ini, Anda Saya telah menulis data output menggunakan pernyataan cetak, yang secara default menulis ekspresi sebagai string ke layar atau jendela konsol. Hal ini ditunjukkan pada Listing 1, yang mengulangi program Hello, World Python pertama Anda dengan beberapa tweak kecil. Seperti contoh ini, Menulis data mudah dengan pernyataan cetak Pertama, contoh menghasilkan string sederhana Kemudian ia membuat dan menghasilkan string majemuk yang dibuat dengan teknik teknik pemformatan string. Setelah itu, bagaimanapun, semuanya berubah dari versi kode yang lebih awal. Baris berikutnya menciptakan sebuah File objek, lewat nama dan karakter aw untuk membiarkan Anda menulis ke file Anda kemudian menggunakan pernyataan cetak yang dimodifikasi - dengan dua simbol yang lebih besar dari diikuti oleh variabel yang menyimpan objek file - ke w Ritus string yang sama s Kali ini, bagaimanapun, data tidak ditampilkan di layar Pertanyaan sebenarnya adalah, kemana data itu masuk Dan, apa objek file ini. Pertanyaan pertama mudah dijawab Cari file, dan tampilkan Isinya seperti yang ditunjukkan di bawah ini. Seperti yang bisa Anda lihat, data itu dituliskan ke file persis seperti yang akan dituliskan ke layar sebelumnya. Sekarang, perhatikan baris terakhir di Listing 1, yang memanggil metode close pada objek file ini. Penting dalam program Python karena file input dan output adalah, secara default, data buffer tidak ditulis begitu Anda memanggil pernyataan cetak tapi malah ditulis dalam bongkahan. Mekanisme paling sederhana untuk memberi tahu Python untuk menulis data Anda ke file adalah secara eksplisit. Panggil metode yang dekat. Objek file adalah mekanisme dasar dimana Anda berinteraksi dengan file di komputer Anda. Anda dapat menggunakan objek file untuk membaca data, menulis data, menambahkan data ke file, dan bekerja dengan biner atau teks Data. Teknik paling sederhana untuk lear Ning lebih lanjut tentang objek file adalah meminta bantuan, seperti yang ditunjukkan pada Listing 2.Listing 2 Mendapatkan bantuan untuk objek file. Seperti ditunjukkan oleh fasilitas bantuan, bekerja dengan objek file yang sederhana Anda membuat objek file menggunakan file constructor atau Metode terbuka, yang merupakan alias untuk konstruktor file Parameter kedua, yaitu optional, menentukan bagaimana file tersebut akan digunakan. R default menunjukkan bahwa Anda ingin membaca data dari file. W menunjukkan bahwa Anda ingin menulis data ke file, memotong isi sebelumnya. A mengindikasikan bahwa Anda ingin menulis data ke file, menambahkan sampai akhir. R menunjukkan bahwa Anda akan membaca dan menulis untuk menghapus data sebelumnya dari file tersebut. R a mengindikasikan Anda akan membaca dan menulis untuk menambahkan file. B menunjukkan bahwa Anda akan membaca atau menulis data biner. Daftar kode pertama dalam artikel ini menulis data ke file Now, Listing 3 menunjukkan bagaimana membaca data ini ke dalam program Python dan mengurai isi file. Membuka 3 data Reading Dari sebuah file. Untuk membaca datanya, Anda terlebih dahulu membuat objek file yang sesuai - dalam kasus ini, yang membuka file - dan membaca isinya dengan menggunakan metode baca Metode ini membaca keseluruhan file menjadi sebuah string yang dicetak ke Konsol dalam program ini Panggilan kedua ke metode baca, di mana Anda mencoba memberi nilai pada variabel str, mengembalikan sebuah string kosong Hal ini terjadi karena operasi baca pertama membaca keseluruhan file Ketika Anda mencoba membaca isinya lagi, Anda Kembali ke akhir file, jadi tidak ada yang bisa dibaca. Solusi untuk masalah ini juga mudah Beri tahu objek file untuk kembali ke awal file Anda melakukannya melalui metode pencarian, yang mengambil satu parameter yang menunjukkan Dimana di file yang ingin anda mulai baca o Misalnya, nol menunjukkan dimulainya file Metode pencarian memungkinkan operasi yang lebih kompleks, namun bisa berbahaya. Untuk saat ini, mari kita bertahan dengan penggunaan sederhana. Sekarang Anda kembali ke awal file, Anda Dapat membaca isi file menjadi variabel string dan mengurai isi string dengan tepat Perhatikan bahwa baris dalam file dibedakan dengan karakter newline atau end-of-line Jika Anda mencoba memanggil metode split pada string Anda, itu akan terpecah. Pada karakter spasi seperti ruang Untuk memiliki metode membagi baris berdasarkan karakter baris baru, Anda harus secara eksplisit menentukan karakter baris baru Anda kemudian dapat membagi string dan iterate melalui garis dalam file dalam satu untuk loop. Sepertinya Banyak pekerjaan hanya untuk membaca dan memproses satu baris dari sebuah file Python membuat hal-hal sederhana menjadi mudah, jadi Anda mungkin bertanya-tanya apakah ada jalan pintas yang tersedia untuk tugas ini Seperti yang ditunjukkan pada Listing 4, jawabannya adalah ya. Membuka 4 Membaca dan menguraikan Garis. L Isting 4 menunjukkan tiga teknik untuk membaca dan menguraikan garis dalam file teks Pertama, Anda membuka file dan menugaskannya ke variabel Anda kemudian memanggil metode readlines, yang membaca keseluruhan file ke dalam memori dan membagi isinya ke dalam daftar string S The for loop iterates atas daftar string s, mencetaknya satu per satu. Kedua untuk loop menyederhanakan proses ini sedikit dengan menggunakan variabel implisit yaitu, yang tidak diciptakan secara eksplisit untuk objek file Anda membuka File dan membaca isinya sekaligus, menghasilkan hasil yang sama seperti contoh eksplisit pertama Contoh terakhir menyederhanakan hal-hal yang lebih dan menunjukkan kemampuan untuk iterate secara langsung di atas objek file yang mencatat bahwa ini adalah fitur baru Python dan oleh karena itu, Mungkin tidak bekerja pada komputer Anda Dalam kasus ini, Anda membuat objek file implisit, dan Python melakukan sisanya, memungkinkan Anda untuk mengulangi semua baris dalam file. Kadang, Anda mungkin menginginkan tingkat kontrol yang lebih tinggi saat Anda r E membaca data dari file Dalam kasus ini, Anda harus menggunakan metode readline, seperti ditunjukkan pada Listing 5. Contoh ini menunjukkan bagaimana cara memindahkan file yang membaca satu baris pada satu waktu atau secara eksplisit memindahkan indikator posisi file menggunakan metode pencarian Anda. Langkah pertama melalui file baris demi baris dengan menggunakan metode readline Ketika Anda mencapai akhir file, metode readline mengembalikan sebuah string kosong Mencoba untuk terus membaca melewati akhir file dengan cara ini tidak menyebabkan kesalahan, namun mengembalikan sebuah String kosong. Anda kemudian melompat kembali ke awal file dan membaca baris lain Metode kirim menampilkan di mana Anda berada dalam file yang seharusnya mengikuti baris teks pertama - dalam kasus ini, pada posisi karakter ke-13 Dengan menggunakan ini Pengetahuan, Anda bisa masuk parameter ke metode baca atau metode readline untuk mengontrol berapa banyak karakter yang dibaca Untuk metode baca, parameter ini 17 pada contoh ini adalah jumlah karakter yang akan dibaca dari file. Metode readline, Namun, membaca jumlah karakter yang ditentukan dan terus membaca sampai akhir baris itu. Dalam contoh ini, ia membaca teks teks pertama dan kedua. Sejauh ini, contohnya berfokus pada membaca data, bukan menulis data Seperti yang ditunjukkan pada Listing 6 , Bagaimanapun, menulis itu mudah sekali Anda mengetahui dasar-dasarnya bekerja dengan objek file. Untuk menulis data ke file, Anda harus terlebih dahulu membuat objek file Tapi dalam kasus ini, Anda harus menentukan bahwa Anda ingin menulis ke file dengan Dengan menggunakan flag mode w Pada contoh ini, Anda menuliskan isi daftar mydata ke dalam file, menutup file, lalu membuka kembali file sehingga Anda dapat membaca isinya. Namun, Anda akan ingin membaca dan menulis dari Sebuah file pada saat bersamaan, jadi bagian selanjutnya dari contoh ini membuka kembali file dengan menggunakan mode r Karena Anda akan bisa menulis ke file, tidak menambahkan, file akan terpotong Pertama, Anda menulis isi daftar mydata ke File, maka Anda memposisikan ulang file pointer ke awal file dan membaca th E isi Contoh ini kemudian menutup file dan membuka kembali file tersebut dengan menggunakan mode baca dan append, ra Seperti ditunjukkan oleh contoh kode, isi file sekarang merupakan hasil dari dua operasi tulis yang diulang teksnya. Semua contoh sebelumnya telah berhubungan dengan tekstual. Atau data karakter Anda menulis dan membaca string karakter s Dalam situasi tertentu, namun - misalnya, ketika Anda kembali bekerja dengan bilangan bulat atau file terkompresi - Anda harus dapat membaca dan menulis data biner Anda dapat dengan mudah melakukannya dengan Python oleh Menambahkan b ke mode file saat Anda membuat objek file, seperti ditunjukkan pada Listing 7.Listing 7 Bekerja dengan data biner. Dalam contoh ini, Anda membuat objek file yang sesuai, kemudian menulis karakter biner dengan nilai ASCII dari 50 menjadi 69 You Mengubah bilangan bulat yang dibuat oleh panggilan ke metode jangkauan ke karakter menggunakan metode chr Setelah Anda menulis semua data, Anda menutup file dan membukanya kembali untuk dibaca, sekali lagi menggunakan tanda mode biner Membaca file menunjukkan bahwa Anda jelas tidak menulis bilangan bulat ke file sebagai gantinya, Anda menuliskan nilai karakter mereka. Ketika Anda membaca dan menulis data biner, Anda harus berhati-hati karena platform yang berbeda menyimpan data biner dengan berbagai cara. Jika Anda harus bekerja dengan data biner, itu s Terbaik untuk menggunakan objek yang sesuai dari perpustakaan Python atau satu dari pengembang pihak ketiga. Artikel ini membahas bagaimana membaca dan menulis data ke file dari program Python Secara keseluruhan, prosesnya sederhana Buat objek file yang sesuai, lalu baca atau Tulis seperlunya Namun, Anda harus berhati-hati tentang pemotongan saat menggunakan mode tulis untuk membuat objek file untuk menulis data ke file Jika Anda perlu menambahkan data ke file, Anda harus menggunakan mode append saat membuat objek file. Semua artikel di developerWorks Temukan seri Python. Bila Anda memiliki juru bahasa Python yang bekerja, tutorial Python adalah tempat yang tepat untuk mulai belajar bahasa. Kunjungi zona sumber pengembangWorks Open untuk mengetahui bagaimana caranya. Informasi, peralatan, dan pembaruan proyek untuk membantu Anda mengembangkan teknologi open source dan menggunakannya dengan produk IBM. Dapatkan produk dan teknologi. Pelajari proyek pengembangan open source Anda berikutnya dengan perangkat lunak percobaan IBM yang tersedia untuk diunduh atau di DVD. Ayo terlibat dalam Komunitas developerWorks dengan berpartisipasi dalam blog developerWorks. Robert J Brunner adalah seorang ilmuwan riset di National Centre for Supercomputing Applications dan Asisten Profesor Astronomi di University of Illinois, Urbana-Champaign Dia telah menerbitkan beberapa buku dan sejumlah artikel dan tutorial tentang Berbagai topik Anda dapat menghubungi dia di. Laporkan pelecehan. Laporkan penyalahgunaan. developerWorks Masuk. Pilih nama tampilan Anda.16 2 io Alat inti untuk bekerja dengan arus.16 2 1 Ikhtisar Modul io menyediakan fasilitas utama Python untuk menangani Dengan berbagai jenis IO Ada tiga jenis utama IO IO IO IO dan IO mentah Ini adalah kategori generik, dan berbagai toko pendukung dapat digunakan untuk R masing-masing objek beton milik salah satu kategori ini disebut objek file Istilah umum lainnya adalah objek arus dan objek seperti file. Selain kategorinya, masing-masing objek aliran beton juga memiliki berbagai kemampuan yang dapat dibaca hanya, Write-only, atau read-write Hal ini juga dapat memungkinkan akses acak acak mencari ke depan atau ke belakang ke lokasi manapun, atau hanya akses sekuensial misalnya dalam kasus soket atau pipa. Semua aliran berhati-hati dengan jenis data yang Anda berikan kepada Mereka Sebagai contoh, memberi sebuah objek str ke metode tulis dari aliran biner akan menaikkan TypeError Jadi, akan memberi byte objek ke metode penulisan aliran teks. Dikatakan dalam versi 3 3 Operasi yang digunakan untuk menaikkan IOError sekarang meningkatkan OSError sejak IOError Sekarang adalah sebuah alias dari OSError.16 2 1 1 Teks I O. Text IO mengharapkan dan menghasilkan str objects Ini berarti bahwa setiap kali toko pendukung aslinya dibuat dari byte seperti dalam kasus file, pengkodean dan decoding data dibuat Transpare Ntly serta terjemahan opsional karakter baris baru yang spesifik platform. Cara termudah untuk membuat aliran teks adalah dengan terbuka menentukan secara opsional encoding. Di aliran teks memori juga tersedia sebagai objek StringIO. API aliran teks dijelaskan secara rinci di Dokumentasi TextIOBase.16 2 1 2 Biner I O. Binary IO juga disebut buffered IO mengharapkan objek seperti byte dan menghasilkan objek byte Tidak ada pengkodean, decoding, atau terjemahan newline yang dilakukan. Kategori arus ini dapat digunakan untuk semua jenis non - Data teks, dan juga ketika kontrol manual atas penanganan data teks diinginkan. Cara termudah untuk membuat aliran biner adalah dengan terbuka dengan b dalam mode string. Di aliran biner memori juga tersedia sebagai objek BytesIO. Biner Stream API dijelaskan secara rinci dalam dokumen BufferedIOBase. Modul perpustakaan lainnya dapat memberikan cara tambahan untuk membuat teks atau aliran biner Lihat misalnya.16 2 1 3 Raw I O. Raw IO juga disebut unbuffered IO yang umumnya digunakan. Sebagai blok bangunan tingkat rendah untuk aliran biner dan teks, jarang berguna untuk memanipulasi aliran mentah dari kode pengguna secara langsung. Anda dapat membuat aliran mentah dengan membuka file dalam mode biner dengan buffering dinonaktifkan. API aliran mentah adalah Dijelaskan secara rinci dalam dokumen RawIOBase.16 2 2 Antarmuka Modul Tingkat Tinggi. An int yang berisi ukuran buffer default yang digunakan oleh modul IO kelas buffer terbuka menggunakan file s blksize seperti yang diperoleh jika memungkinkan. Ini adalah alias untuk Builtin open function. exception io BlockingIOError. Ini adalah alias kompatibilitas untuk exception BlockingIOError builtin io UnsupportedOperation. An pengecualian yang mewarisi OSError dan ValueError yang muncul saat operasi yang tidak didukung dipanggil pada sebuah stream.16 2 2 1 In-memory Streams. Ini juga memungkinkan untuk menggunakan objek str atau byte seperti file untuk membaca dan menulis. Untuk string StringIO dapat digunakan seperti file yang dibuka dalam mode teks BytesIO dapat digunakan seperti file yang dibuka dalam biner. Mode Keduanya menyediakan kemampuan baca tulis penuh dengan akses acak.16 2 3 Hirarki kelas. Implementasi aliran IO disusun sebagai hierarki kelas Kelas dasar abstrak pertama ABC, yang digunakan untuk menentukan berbagai kategori aliran, kemudian kelas beton Menyediakan implementasi stream standar. Kelas dasar abstrak juga menyediakan implementasi standar beberapa metode untuk membantu implementasi kelas arus beton. Misalnya, BufferedIOBase menyediakan implementasi readinto dan readline yang tidak optimal. Di bagian atas hierarki IO adalah kelas dasar abstrak IOBase Ini mendefinisikan antarmuka dasar ke arus Perhatikan, bagaimanapun, bahwa tidak ada pemisahan antara pembacaan dan penulisan ke implementasi arus diperbolehkan untuk meningkatkan Pengendalian yang Tidak Didukung jika mereka tidak mendukung operasi yang diberikan. RawIOBase ABC meluas IOBase Ini berkaitan dengan pembacaan dan Menulis byte ke aliran FileIO subclass RawIOBase untuk menyediakan antarmuka ke file dalam Sistem berkas mesin. BufferedIOBase ABC menangani buffering pada aliran byte mentah RawIOBase Subkelasnya, buffer BufferedWriter BufferedReader dan BufferedRWPair yang dapat dibaca, dapat ditulis, dan BufferedRandom yang mudah dibaca dan dapat ditulis menyediakan antarmuka buffer ke akses acak stream subclass BufferedIOBase lainnya. , BytesIO adalah aliran in-memory bytes. TextIOBase ABC, subclass lain dari IOBase berhubungan dengan aliran yang bytenya mewakili teks, dan menangani pengkodean dan decoding ke dan dari string TextIOWrapper yang meluasnya, adalah antarmuka teks buffer ke buffered raw Stream BufferedIOBase Akhirnya, StringIO adalah aliran memori untuk teks. Nama kata bukan bagian dari spesifikasi, dan hanya argumen open yang dimaksudkan untuk digunakan sebagai argumen kata kunci. Tabel berikut merangkum ABC yang disediakan oleh modul io. 16 2 3 1 Kelas Dasar IO. Kelas dasar abstrak untuk semua kelas IO, yang bekerja pada arus byte Tidak ada konstruksi publik Kelas ini memberikan implementasi abstrak yang kosong untuk banyak metode yang diturunkan dari kelas dapat menggantikan secara selektif implementasi default merupakan file yang tidak dapat dibaca, ditulis atau dicari. Meskipun IOBase tidak menyatakan read read atau write karena tanda tangan mereka akan bervariasi, implementasi dan Klien harus mempertimbangkan metode tersebut bagian dari antarmuka Selain itu, implementasi dapat meningkatkan ValueError atau UnsupportedOperation saat operasi yang tidak mereka dukung disebut. Tipe dasar yang digunakan untuk data biner yang dibaca dari atau ditulis ke file adalah byte Objek mirip byte lainnya diterima. Sebagai argumen metode juga Dalam beberapa kasus, seperti readinto objek yang dapat ditulis seperti bytearray diperlukan Kelas teks IO bekerja dengan data str. Note yang memanggil metode apapun bahkan pertanyaan tentang aliran tertutup tidak terdefinisi Implementasi dapat meningkatkan ValueError dalam kasus ini. Subkelasnya mendukung protokol iterator, yang berarti bahwa objek IOBase dapat diulang untuk menghasilkan garis Dalam sebuah stream Lines didefinisikan sedikit berbeda tergantung pada apakah aliran adalah aliran biner yang menghasilkan byte, atau aliran teks yang menghasilkan string karakter Lihat readline below. IOBase juga merupakan manajer konteks dan oleh karena itu mendukung pernyataan dengan pernyataan Dalam contoh ini, file ditutup Setelah dengan pernyataan s suite selesai bahkan jika terjadi exception. IOBase menyediakan atribut dan metode data ini. Flush dan tutup stream ini Metode ini tidak berpengaruh jika file sudah ditutup Setelah file ditutup, operasi apapun pada file misal. Membaca atau menulis akan menaikkan ValueError. Sebagai kemudahan, diperbolehkan untuk memanggil metode ini lebih dari satu kali hanya panggilan pertama, bagaimanapun, akan berpengaruh. Kapan arus ditutup. Balikkan deskriptor file yang mendasari sebuah bilangan bulat dari Stream jika ada OSError dinaikkan jika objek IO tidak menggunakan deskriptor file. Flush buffer tulis dari stream jika ada Ini tidak melakukan apa-apa untuk arus baca-saja dan non-blocking. Retur N Benar jika alirannya bersifat interaktif, yaitu terhubung ke perangkat tty terminal. Return Benar jika arus dapat dibaca dari Jika dibaca Salah akan menaikkan OSError. Baca dan kembalikan satu baris dari arus Jika ukuran ditentukan, paling banyak ukuran byte akan menjadi Read. The line terminator selalu bn untuk file biner untuk file teks, argumen newline untuk membuka dapat digunakan untuk memilih terminator baris yang dikenali. Baca dan kembalikan daftar baris dari petunjuk arus sungai dapat ditentukan untuk mengontrol jumlah Baris yang tidak dibaca lagi akan dibaca jika ukuran total karakter byte dari semua baris sejauh ini melebihi petunjuk. Perhatikan bahwa hal itu mungkin terjadi pada iterasi pada objek file yang menggunakan jalur dalam file tanpa memanggil. Mengubah posisi arus ke byte yang diberikan. Offset offset ditafsirkan relatif terhadap posisi yang ditunjukkan oleh mana Nilai default untuk mana adalah Nilai SEEKSET untuk mana adanya. SEEKSET atau 0 mulai dari arus offset default harus nol atau positif. SEEKCUR atau 1 posisi arus saat ini Himpunan mungkin negatif. SEEKEND atau 2 akhir arus offset biasanya negatif. Balikkan posisi absolut yang baru. Baru di versi 3 1 Konstanta SEEK. Baru di versi 3 3 Beberapa sistem operasi dapat mendukung nilai tambahan, seperti atau Nilai yang valid Untuk sebuah file bisa bergantung padanya terbuka pada teks atau mode biner. Return Benar jika stream mendukung akses acak Jika False seek tell and truncate akan menaikkan OSError. Return posisi arus saat ini. Resize stream ke ukuran yang diberikan dalam byte atau Posisi saat ini jika ukuran tidak ditentukan Posisi arus saat ini tidak berubah Resize ini dapat memperpanjang atau mengurangi ukuran file saat ini Jika ekstensi, isi area file baru bergantung pada platform pada sebagian besar sistem, byte tambahan tidak terisi penuh Ukuran file yang baru dikembalikan. Dikenakan di versi 3 5 Windows sekarang akan mengisi file kosong saat memperpanjang. Balik Benar jika stream mendukung penulisan Jika False write and truncate akan menaikkan OSError. Write daftar baris ke stream Lin E pemisah tidak ditambahkan, jadi biasanya untuk setiap baris yang disediakan untuk memiliki pemisah garis pada akhirnya. Buat kerusakan objek IOBase memberikan penerapan standar metode ini yang memanggil metode dekat instance. Base untuk biner mentah IO Ini mewarisi IOBase Tidak ada konstruktor publik. Uzian biner IO biasanya menyediakan akses tingkat rendah ke perangkat OS atau API yang mendasarinya, dan tidak mencoba merangkumnya dalam primitif tingkat tinggi sehingga diserahkan ke Buffered IO dan Text IO, yang dijelaskan Kemudian di halaman ini. Selain atribut dan metode dari IOBase RawIOBase menyediakan metode berikut. Membaca sampai ukuran byte dari objek dan mengembalikannya Sebagai kenyamanan, jika ukuran tidak ditentukan atau -1, readall disebut sebaliknya, hanya satu System call yang pernah dibuat Kurang dari ukuran byte dapat dikembalikan jika sistem operasi memanggil kembali lebih sedikit dari ukuran byte. Jika 0 byte dikembalikan, dan ukurannya tidak 0, ini mengindikasikan akhir file Jika objek dalam mode non-blocking and no bytes are available, None is returned. Read and return all the bytes from the stream until EOF, using multiple calls to the stream if necessary. Read bytes into a pre-allocated, writable bytes-like object b and return the number of bytes read If the object is in non-blocking mode and no bytes are available, None is returned. Write the given bytes-like object b to the underlying raw stream, and return the number of bytes written This can be less than the length of b in bytes, depending on specifics of the underlying raw stream, and especially if it is in non-blocking mode None is returned if the raw stream is set not to block and no single byte could be readily written to it The caller may release or mutate b after this method returns, so the implementation should only access b during the method call. class io BufferedIOBase. Base class for binary streams that support some kind of buffering It inherits IOBase There is no public constructor. The main difference with RawIOBase is that m ethods read readinto and write will try respectively to read as much input as requested or to consume all given output, at the expense of making perhaps more than one system call. In addition, those methods can raise BlockingIOError if the underlying raw stream is in non-blocking mode and cannot take or give enough data unlike their RawIOBase counterparts, they will never return None. Besides, the read method does not have a default implementation that defers to readinto. A typical BufferedIOBase implementation should not inherit from a RawIOBase implementation, but wrap one, like BufferedWriter and BufferedReader do. BufferedIOBase provides or overrides these methods and attribute in addition to those from IOBase. The underlying raw stream a RawIOBase instance that BufferedIOBase deals with This is not part of the BufferedIOBase API and may not exist on some implementations. Separate the underlying raw stream from the buffer and return it. After the raw stream has been detached, the buffer i s in an unusable state. Some buffers, like BytesIO do not have the concept of a single raw stream to return from this method They raise UnsupportedOperation. New in version 3 1.Read and return up to size bytes If the argument is omitted, None or negative, data is read and returned until EOF is reached An empty bytes object is returned if the stream is already at EOF. If the argument is positive, and the underlying raw stream is not interactive, multiple raw reads may be issued to satisfy the byte count unless EOF is reached first But for interactive raw streams, at most one raw read will be issued, and a short result does not imply that EOF is imminent. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. Read and return up to size bytes, with at most one call to the underlying raw stream s read or readinto method This can be useful if you are implementing your own buffering on top of a BufferedIOBase object. Read bytes in to a pre-allocated, writable bytes-like object b and return the number of bytes read. Like read multiple reads may be issued to the underlying raw stream, unless the latter is interactive. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. Read bytes into a pre-allocated, writable bytes-like object b using at most one call to the underlying raw stream s read or readinto method Return the number of bytes read. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. New in version 3 5.Write the given bytes-like object b and return the number of bytes written always equal to the length of b in bytes, since if the write fails an OSError will be raised Depending on the actual implementation, these bytes may be readily written to the underlying stream, or held in a buffer for performance and latency reasons. When in non-blocking mode, a BlockingIOError is raise d if the data needed to be written to the raw stream but it couldn t accept all the data without blocking. The caller may release or mutate b after this method returns, so the implementation should only access b during the method call.16 2 3 2 Raw File I O. FileIO represents an OS-level file containing bytes data It implements the RawIOBase interface and therefore the IOBase interface, too. The name can be one of two things. a character string or bytes object representing the path to the file which will be opened In this case closefd must be True the default otherwise an error will be raised. an integer representing the number of an existing OS-level file descriptor to which the resulting FileIO object will give access When the FileIO object is closed this fd will be closed as well, unless closefd is set to False. The mode can be r w x or a for reading default , writing, exclusive creation or appending The file will be created if it doesn t exist when opened for writing or appending it will be truncated when opened for writing FileExistsError will be raised if it already exists when opened for creating Opening a file for creating implies writing, so this mode behaves in a similar way to w Add a to the mode to allow simultaneous reading and writing. The read when called with a positive argument , readinto and write methods on this class will only make one system call. A custom opener can be used by passing a callable as opener The underlying file descriptor for the file object is then obtained by calling opener with name flags opener must return an open file descriptor passing as opener results in functionality similar to passing None. See the open built-in function for examples on using the opener parameter. Changed in version 3 3 The opener parameter was added The x mode was added. Changed in version 3 4 The file is now non-inheritable. In addition to the attributes and methods from IOBase and RawIOBase FileIO provides the following data attributes. The mode as given in the con structor. The file name This is the file descriptor of the file when no name is given in the constructor.16 2 3 3 Buffered Streams. Buffered I O streams provide a higher-level interface to an I O device than raw I O does. A stream implementation using an in-memory bytes buffer It inherits BufferedIOBase The buffer is discarded when the close method is called. The optional argument initialbytes is a bytes-like object that contains initial data. BytesIO provides or overrides these methods in addition to those from BufferedIOBase and IOBase. Return a readable and writable view over the contents of the buffer without copying them Also, mutating the view will transparently update the contents of the buffer. As long as the view exists, the BytesIO object cannot be resized or closed. New in version 3 2.Return bytes containing the entire contents of the buffer. In BytesIO this is the same as read. In BytesIO this is the same as readinto. New in version 3 5.class io BufferedReader raw buffersize DEFAULTBU FFERSIZE. A buffer providing higher-level access to a readable, sequential RawIOBase object It inherits BufferedIOBase When reading data from this object, a larger amount of data may be requested from the underlying raw stream, and kept in an internal buffer The buffered data can then be returned directly on subsequent reads. The constructor creates a BufferedReader for the given readable raw stream and buffersize If buffersize is omitted, DEFAULTBUFFERSIZE is used. BufferedReader provides or overrides these methods in addition to those from BufferedIOBase and IOBase. Return bytes from the stream without advancing the position At most one single read on the raw stream is done to satisfy the call The number of bytes returned may be less or more than requested. Read and return size bytes, or if size is not given or negative, until EOF or if the read call would block in non-blocking mode. Read and return up to size bytes with only one call on the raw stream If at least one byte is buffered, onl y buffered bytes are returned Otherwise, one raw stream read call is made. class io BufferedWriter raw buffersize DEFAULTBUFFERSIZE. A buffer providing higher-level access to a writeable, sequential RawIOBase object It inherits BufferedIOBase When writing to this object, data is normally placed into an internal buffer The buffer will be written out to the underlying RawIOBase object under various conditions, including. when the buffer gets too small for all pending data. when flush is called. when a seek is requested for BufferedRandom objects. when the BufferedWriter object is closed or destroyed. The constructor creates a BufferedWriter for the given writeable raw stream If the buffersize is not given, it defaults to DEFAULTBUFFERSIZE. BufferedWriter provides or overrides these methods in addition to those from BufferedIOBase and IOBase. Force bytes held in the buffer into the raw stream A BlockingIOError should be raised if the raw stream blocks. Write the bytes-like object b and return the n umber of bytes written When in non-blocking mode, a BlockingIOError is raised if the buffer needs to be written out but the raw stream blocks. class io BufferedRandom raw buffersize DEFAULTBUFFERSIZE. A buffered interface to random access streams It inherits BufferedReader and BufferedWriter and further supports seek and tell functionality. The constructor creates a reader and writer for a seekable raw stream, given in the first argument If the buffersize is omitted it defaults to DEFAULTBUFFERSIZE. class io BufferedRWPair reader writer buffersize DEFAULTBUFFERSIZE. A buffered I O object combining two unidirectional RawIOBase objects one readable, the other writeable into a single bidirectional endpoint It inherits BufferedIOBase. reader and writer are RawIOBase objects that are readable and writeable respectively If the buffersize is omitted it defaults to DEFAULTBUFFERSIZE. BufferedRWPair does not attempt to synchronize accesses to its underlying raw streams You should not pass it the same object as reader and writer use BufferedRandom instead.16 2 3 4 Text I O. Base class for text streams This class provides a character and line based interface to stream I O There is no readinto method because Python s character strings are immutable It inherits IOBase There is no public constructor. TextIOBase provides or overrides these data attributes and methods in addition to those from IOBase. The name of the encoding used to decode the stream s bytes into strings, and to encode strings into bytes. The error setting of the decoder or encoder. A string, a tuple of strings, or None indicating the newlines translated so far Depending on the implementation and the initial constructor flags, this may not be available. The underlying binary buffer a BufferedIOBase instance that TextIOBase deals with This is not part of the TextIOBase API and may not exist in some implementations. Separate the underlying binary buffer from the TextIOBase and return it. After the underlying buffer has been detach ed, the TextIOBase is in an unusable state. Some TextIOBase implementations, like StringIO may not have the concept of an underlying buffer and calling this method will raise UnsupportedOperation. New in version 3 1.Read and return at most size characters from the stream as a single str If size is negative or None reads until EOF. Read until newline or EOF and return a single str If the stream is already at EOF, an empty string is returned. If size is specified, at most size characters will be read. Change the stream position to the given offset Behaviour depends on the whence parameter The default value for whence is SEEKSET. SEEKSET or 0 seek from the start of the stream the default offset must either be a number returned by or zero Any other offset value produces undefined behaviour. SEEKCUR or 1 seek to the current position offset must be zero, which is a no-operation all other values are unsupported. SEEKEND or 2 seek to the end of the stream offset must be zero all other values are unsu pported. Return the new absolute position as an opaque number. New in version 3 1 The SEEK constants. Return the current stream position as an opaque number The number does not usually represent a number of bytes in the underlying binary storage. Write the string s to the stream and return the number of characters written. class io TextIOWrapper buffer encoding None errors None newline None linebuffering False writethrough False. A buffered text stream over a BufferedIOBase binary stream It inherits TextIOBase. encoding gives the name of the encoding that the stream will be decoded or encoded with It defaults to. errors is an optional string that specifies how encoding and decoding errors are to be handled Pass strict to raise a ValueError exception if there is an encoding error the default of None has the same effect , or pass ignore to ignore errors Note that ignoring encoding errors can lead to data loss replace causes a replacement marker such as to be inserted where there is malformed dat a backslashreplace causes malformed data to be replaced by a backslashed escape sequence When writing, xmlcharrefreplace replace with the appropriate XML character reference or namereplace replace with N escape sequences can be used Any other error handling name that has been registered with is also valid. newline controls how line endings are handled It can be None n r and r n It works as follows. When reading input from the stream, if newline is None universal newlines mode is enabled Lines in the input can end in n r or r n and these are translated into n before being returned to the caller If it is universal newlines mode is enabled, but line endings are returned to the caller untranslated If it has any of the other legal values, input lines are only terminated by the given string, and the line ending is returned to the caller untranslated. When writing output to the stream, if newline is None any n characters written are translated to the system default line separator, If newline is or n no translation takes place If newline is any of the other legal values, any n characters written are translated to the given string. If linebuffering is True flush is implied when a call to write contains a newline character. If writethrough is True calls to write are guaranteed not to be buffered any data written on the TextIOWrapper object is immediately handled to its underlying binary buffer. Changed in version 3 3 The writethrough argument has been added. Changed in version 3 3 The default encoding is now instead of Don t change temporary the locale encoding using use the current locale encoding instead of the user preferred encoding. TextIOWrapper provides one attribute in addition to those of TextIOBase and its parents. Whether line buffering is enabled. An in-memory stream for text I O The text buffer is discarded when the close method is called. The initial value of the buffer can be set by providing initialvalue If newline translation is enabled, newlines will be encoded as if b y write The stream is positioned at the start of the buffer. The newline argument works like that of TextIOWrapper The default is to consider only n characters as ends of lines and to do no newline translation If newline is set to None newlines are written as n on all platforms, but universal newline decoding is still performed when reading. StringIO provides this method in addition to those from TextIOBase and its parents. Return a str containing the entire contents of the buffer Newlines are decoded as if by read although the stream position is not changed. class io IncrementalNewlineDecoder.16 2 4 Performance. This section discusses the performance of the provided concrete I O implementations.16 2 4 1 Binary I O. By reading and writing only large chunks of data even when the user asks for a single byte, buffered I O hides any inefficiency in calling and executing the operating system s unbuffered I O routines The gain depends on the OS and the kind of I O which is performed For example, o n some modern OSes such as Linux, unbuffered disk I O can be as fast as buffered I O The bottom line, however, is that buffered I O offers predictable performance regardless of the platform and the backing device Therefore, it is almost always preferable to use buffered I O rather than unbuffered I O for binary data.16 2 4 2 Text I O. Text I O over a binary storage such as a file is significantly slower than binary I O over the same storage, because it requires conversions between unicode and binary data using a character codec This can become noticeable handling huge amounts of text data like large log files Also, and are both quite slow due to the reconstruction algorithm used. StringIO however, is a native in-memory unicode container and will exhibit similar speed to BytesIO.16 2 4 3 Multi-threading. FileIO objects are thread-safe to the extent that the operating system calls such as read 2 under Unix they wrap are thread-safe too. Binary buffered objects instances of BufferedReader Buf feredWriter BufferedRandom and BufferedRWPair protect their internal structures using a lock it is therefore safe to call them from multiple threads at once. TextIOWrapper objects are not thread-safe.16 2 4 4 Reentrancy. Binary buffered objects instances of BufferedReader BufferedWriter BufferedRandom and BufferedRWPair are not reentrant While reentrant calls will not happen in normal situations, they can arise from doing I O in a signal handler If a thread tries to re-enter a buffered object which it is already accessing, a RuntimeError is raised Note this doesn t prohibit a different thread from entering the buffered object. The above implicitly extends to text files, since the open function will wrap a buffered object inside a TextIOWrapper This includes standard streams and therefore affects the built-in function print as well.

No comments:

Post a Comment