Friday 18 August 2017

Plistlib Biner Pilihan


14.5. Plistlib 8212 Menghasilkan dan mengurai file Mac OS X. plist Modul ini menyediakan antarmuka untuk membaca dan menulis daftar 8220property8221 yang digunakan terutama oleh Mac OS X dan mendukung file biner dan XML plist. Format file daftar properti (.plist) adalah serialisasi sederhana yang mendukung jenis objek dasar, seperti kamus, daftar, angka dan string. Biasanya objek tingkat atas adalah kamus. Untuk menulis dan mengurai file plist, gunakan fungsi dump () dan load (). Untuk bekerja dengan data plist dalam objek byte, gunakan dumps () dan load (). Nilai bisa berupa string, bilangan bulat, pelampung, boolean, tupel, daftar, kamus (tapi hanya dengan kunci string), Data. Byte. Bytesarray atau datetime. datetime objects. Berubah dalam versi 3.4: API baru, API lama tidak berlaku lagi. Dukungan untuk plats format biner ditambahkan. Halaman manual PList dokumentasi Apple8217 tentang format file. Modul ini mendefinisikan fungsi berikut: Baca file plist. Fp harus menjadi objek file biner yang dapat dibaca dan dibaca. Kembalikan objek akar yang tidak dibungkus (yang biasanya adalah kamus). Fmt adalah format file dan nilai berikut ini berlaku: Jika data biner benar benar (default) biner akan dikembalikan sebagai contoh byte. Jika tidak maka dikembalikan sebagai contoh Data. Tipe diktator adalah tipe yang digunakan untuk kamus yang dibaca dari file plist. Struktur yang tepat dari plist dapat dipulihkan dengan menggunakan koleksi. OrderedDict (walaupun urutan kunci tidak penting dalam file plist). Data XML untuk format FMTXML diurai menggunakan parser Expat dari xml. parsers. expat 8211 melihat dokumentasi untuk kemungkinan pengecualian pada XML yang tidak terbentuk. Unsur yang tidak diketahui hanya akan diabaikan oleh parser plist. Parser untuk format biner menimbulkan InvalidFileException saat file tidak dapat diurai. Baru di versi 3.4. Muatkan plist dari objek byte. Lihat load () untuk penjelasan tentang argumen kata kunci. Baru di versi 3.4. Tulis nilai ke file plist. Fp harus bisa ditulis, file biner objek. Argumen fmt menentukan format file plist dan bisa menjadi salah satu dari nilai berikut: Bila pengetikan benar (default) tombol untuk kamus akan dituliskan ke plist dalam urutan yang diurutkan, jika tidak maka akan ditulis dalam urutan iterasi Dari kamus Ketika skipkey adalah false (default), fungsi menaikkan TypeError saat kunci kamus bukan string, jika tombol seperti itu dilewati. TypeError akan dinaikkan jika objek adalah tipe yang tidak didukung atau wadah yang berisi objek tipe yang tidak didukung. OverflowError akan dinaikkan untuk nilai integer yang tidak dapat direpresentasikan dalam (biner) file plist. Baru di versi 3.4. Kembalikan nilai sebagai objek byte berformat plist. Lihat dokumentasi untuk dump () untuk penjelasan tentang argumen kata kunci dari fungsi ini. Baru di versi 3.4. Fungsi berikut tidak berlaku lagi: plistlib. ReadPlist (pathOrFile) Baca file plist. PathOrFile bisa berupa nama file atau objek file yang dapat dibaca (readable and binary). Mengembalikan objek akar yang tidak dibungkus (yang biasanya adalah kamus). Fungsi ini memanggil load () untuk melakukan pekerjaan yang sebenarnya, lihat dokumentasi fungsi itu untuk penjelasan argumen kata kunci. Nilai-nilai titik-titik di hasilnya memiliki metode getattr yang membendung getitem. Ini berarti Anda dapat menggunakan akses atribut untuk mengakses item kamus ini. Tidak berlaku lagi sejak versi 3.4: Gunakan load () sebagai gantinya. Plistlib WritePlist (rootObject. PathOrFile) Tuliskan rootObject ke file plist XML. PathOrFile bisa berupa nama file atau objek file (writable and binary) yang tidak digunakan lagi sejak versi 3.4: Use dump () sebagai gantinya. Plistlib ReadPlistFromBytes (data) Baca data plist dari objek byte. Kembalikan objek akar. Lihat load () untuk deskripsi argumen kata kunci. Nilai-nilai titik-titik di hasilnya memiliki metode getattr yang membendung getitem. Ini berarti Anda dapat menggunakan akses atribut untuk mengakses item kamus ini. Tidak berlaku lagi sejak versi 3.4: Gunakan beban () sebagai gantinya. Plistlib WritePlistToBytes (rootObject) Kembali rootObject sebagai objek byte XML yang diformat plist. Tidak berlaku lagi sejak versi 3.4: Gunakan dump () sebagai gantinya. Kelas berikut tersedia: Kembalikan objek pemetaan yang diperluas dengan nilai yang sama dengan kamus dict. Kelas ini adalah subclass dari dict dimana akses atribut dapat digunakan untuk mengakses item. Artinya, aDict. key sama dengan aDictkey untuk mendapatkan, mengatur dan menghapus item dalam pemetaan. Tidak berlaku lagi sejak versi 3.0. Kembalikan objek pembungkus 8220data8221 di sekitar data objek byte. Ini digunakan dalam fungsi yang mengubah dari pada plists untuk mewakili tipe ltdatagt yang tersedia di plists. Ini memiliki satu atribut, data. Yang bisa digunakan untuk mengambil objek byte Python yang tersimpan di dalamnya. Tidak berlaku lagi sejak versi 3.4: Gunakan objek byte sebagai gantinya. Konstanta berikut tersedia: Format XML untuk file plist. Daftar Arsip Arsip 8 dari 9 (946 kali dilihat) Ronald Oussoren menambahkan komentarnya: Membuka kembali karena Kakao berperilaku berbeda yang telah saya perhatikan sebelumnya. Kode (Objective-C) di bawah ini memasangkan NSDictionary dengan unsigned long of value ULLONGMAX dan kemudian membacanya kembali. Saya telah menduga bahwa nilai yang dipulihkan mengandung angka negatif, namun sebenarnya membaca kembali nilai yang benar. Saya akan melakukan beberapa spelunk untuk mengetahui apa yang terjadi di sini, dan akan menyesuaikan kode plistlib untuk mewakili sepenuhnya semua nilai bilangan bulat 64-bit unsigned (mungkin berdasarkan kode Anda untuk mendukung bilangan bulat 128-bit) Output (pada 64 - bit sistem yang menjalankan OSX 10.9):.demo 2014-01-15 15: 34: 18.196 demo77580: 507 masukan kamus: kunci 18446744073709551615 nilai 18446744073709551615 2014-01-15 15: 34: 18.198 demo77580: 507 sebagai biner plist: lt62706c69 73743030 d1010253 6b657914 00000000 00000000 ffffffff ffffffff 080b0f00 00000000 00010100 00000000 00000300 00000000 00000000 00000000 000020gt 2014-01-15 15: 34: 18.198 demo77580: 507 Dipulihkan sebagai kunci 18446744073709551615 Untuk menggunakan: demo cc - o demo. c-kerangka Cocoa. demo import ltCocoaCocoa. hgt Int main (void) NSAutoreleasePool pool NSAutoreleasePool alloc init NSNumber value NSNumber numberWithUnsignedLongLong: ULLONGMAX NSDictionary dict NSDictionary dictionaryWithObjectsAndKeys: nilai, kunci, nil NSLog (kamus input: nilai llu, dict, ULLONGMAX) NSData serial NSPropertyListSerialization dataWithPropertyList: format dict: NSPropertyListBinaryFormatv10 pilihan: 0 error: nil NSLog (sebagai biner plist:, serial) NSDictionary dipulihkan NSPropertyListSerialization propertiListWithData: pilihan serial: 0 format: nil error: nil NSLog (dikembalikan sebagai, dipulihkan) kembali 0 Pelacak Python ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt milis Python-bugs-list Berhenti berlangganan: mail. python. orgmailmanoptionspython-bugs-listlist-python-bugs40lists. gossamer-threads issue14455 plistlib tidak dapat membaca file json dan biner plist In Reply to issue14455 plistlib tidak dapat membaca file json dan binary plist Ronald Oussoren menambahkan komentarnya: v3 masih dalam proses, dan masih gagal beberapa tes Menggantikan data uji dengan data yang dihasilkan oleh skrip pembantu (agar lebih mudah diperbarui) Gunakan 39subtest39 fitur perpustakaan unittest di 3.4 Kecil tweak ke plist perpustakaan (dumploaddumpsloads fungsi pada akhirnya mungkin won39 T bertahan) Diperbarui link ke CFBinaryPlist. c kode sumber (ini harus menjadi versi yang lebih baru dari file) Ditambahkan pilihan untuk readPlist untuk lulus dalam jenis kamus (default ke plistlib. InternalDict). Hal ini terutama berguna untuk pengujian dan debugging, namun juga mencerminkan argumen kata kunci 39sortkeys39 untuk penulis (bila pesanan tersebut penting untuk ditulis, pengguna harus memiliki beberapa cara untuk mendeteksi pesanan saat membaca). Data yang dihasilkan oleh generator plist biner tidak sesuai dengan data yang dihasilkan oleh Kakao di OSX 10.8 (dan dihasilkan oleh skrip pembantu), saya belum sepenuhnya debugged masalah itu. Plot biner yang dihasilkan dan versi Kakao keduanya dapat diurai oleh plistlib, dan menghasilkan struktur data yang sama dengan pelacak Python lt reportbugs. python. org gt Ronald Oussoren Ronald Oussoren menambahkan komentarnya: Lihat juga: 18168: permintaan opsi sortkeys 11101 : Meminta pilihan untuk mengabaikan 39None39 values ​​saat menulis 9256: objek datetime. datetime yang dibuat oleh plistlib tidak menyertakan informasi zona waktu (dan melihat kode tersebut saya akan mengatakan bahwa zona waktu diabaikan saat menulis file plist juga) 10733: Plist Apple dapat membuat cacat XML (karakter kontrol) daripada tidak bisa dibaca oleh plistlib ---------- Python Ronald Oussoren menambahkan komentarnya: Versi kelima patch harus jauh lebih bersih. Pembersihan kode kode, kode baru menggunakan nama konformasi PEP8 untuk metode dan variabel. Secara eksplisit membuat kelas privat pribadi dengan awalan nama mereka dengan underscore (termasuk kelas parserenerator XML yang lama) Hapus dukungan dalam kode plist biner untuk set dan uuids, tidak dapat dituliskan ke file plist oleh kode Apple. Tidak ada dukungan untuk JSON karena JSON tidak didukung oleh API milik Apple sendiri. Alat baris perintah plutil tidak mendukung output JSON, namun API C dan Objective-C tidak. Tidak ada dukungan untuk format OpenStep lama. Format itu didokumentasikan dengan buruk, telah lama tidak digunakan lagi, dan tulisannya tidak didukung oleh perpustakaan plist Apple. Format OpenStep juga tampaknya jauh lebih terbatas daripada dua yang modern. Patch berisi plistlib. Yang mencerminkan fungsi dengan nama yang sama dari modul acar dan json. Apakah berguna untuk menambahkan fungsi-fungsi itu ke plistlib, dan mencela fungsi yang lebih tua Keuntungan: API Cleaner Menyediakan jalan yang bersih untuk menghapus plistlib. Data dan plistlib. InternalDict (yang terakhir sudah tidak berlaku lagi) Kekurangan: - Sangat (terlalu) mendekati kode yang tidak perlu Churn Apakah menamai PlistParser dan PlistWriter ok Keduanya bersifat pribadi dan pencarian cepat di google sepertinya menunjukkan bahwa tidak ada direktori yang menggunakan kelas-kelas ini. Jika penggantian nama is ok, sebaiknya metodevariabel diganti namanya menjadi gaya PEP8 Jika kata kunci 39default39 ditambahkan ke fungsi serialisasi (simular dengan kata kunci di json. dump), saya tidak memiliki usecase untuk ini, satu-satunya alasan untuk menambahkannya adalah konsistensi dengan Modul json Jika kata kunci 39skipvalues39 ditambahkan ke fungsi serialisasi (untuk mengabaikan nilai yang tidak dapat diserialkan, lihat 11101) Saya tidak yakin bahwa ini adalah ide bagus. Jika kata kunci 39checkcircular39 ditambahkan ke fungsi serialisasi (lagi-lagi mirip dengan kata kunci yang sama untuk json. dump) Ini akan menghindari mengandalkan batas rekursi untuk memecahkan loop tak terbatas saat membuat deretan data melingkar. Perlu memeriksa apakah plist biner dapat berisi struktur data melingkar saat ditulis menggunakan pustaka Apple. Pelacak Python lt reportbugs. python. org gt Ronald Oussoren Ronald Oussoren menambahkan komentarnya: Saya berniat untuk melakukan versi patch saya yang terbaru selama sprint europython, dengan sedikit perubahan: tidak termasuk dump dan load, Perubahan (dan item lainnya pada isu-isu quotopenquot di posting terakhir saya) dapat diatasi nanti. ---------- Python tracker Mailing List Archive Ronald Oussoren menambahkan komentarnya: Ive attached issue14455-v2.txt dengan patch yang diperbarui. Patch ini masih sangat banyak pekerjaan yang sedang berjalan, saya havent punya banyak waktu untuk mengerjakan ini seperti Id. Versi ini: Harus diterapkan dengan rapi ke ujung cabang default Bergerak mengelilingi beberapa kode. Tidak lulus uji unit (kemungkinan besar karena saya telah gagal menggabungkan manual). Unittests juga tidak menutupi fungsi yang telah saya tambahkan. Menambahkan skipkeys dan sortkeys ke fungsi tulis (dengan semantik sama seperti kata kunci ini dengan json. dump) Menambahkan dataasbytes ke fungsi baca. Maka opsi ini adalah true binary data yang dikembalikan sebagai instance dari byte bukan plistlib. Data Yang terakhir masih default. Pelacak Python ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt milis Python-bugs-list Berhenti berlangganan: mail. python. orgmailmanoptionspython-bugs-listlist-python-bugs40lists. gossamer-threads issue14455 plistlib tidak dapat membaca file json dan biner plist In Balas ke Jun 10, 2013, 5:06 AM Posting 2 dari 7 (118 views) Perubahan oleh Ronald Oussoren ltronaldoussorenmacgt: Pelacak Python ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt milis Python-bugs-list Unsubscribe: mail. python. orgmailmanoptionspython-bugs-listlist-python-bugs40lists. gossamer-threads issue14455 plistlib tidak dapat membaca file json dan biner plist Sebagai balasan pada 10 Jun 2013, 5:13 AM Posting 3 dari 7 (120 views) Ronald Oussoren menambahkan komentarnya: V3 masih merupakan pekerjaan yang sedang berjalan, dan masih gagal dalam beberapa tes Data pengujian yang digantikan oleh data yang dihasilkan oleh skrip pembantu (agar lebih mudah diperbarui) Gunakan fitur subtest dari perpustakaan yang tidak ada dalam 3.4 tweak kecil ke perpustakaan plist (fungsi dumploaddumpsloads pada t Dia akhir mungkin tidak akan bertahan) Diperbarui link ke CFBinaryPlist. c kode sumber (ini harus menjadi versi yang lebih baru dari file) Ditambahkan pilihan untuk readPlist untuk lulus dalam jenis kamus (default ke plistlib. InternalDict). Hal ini terutama berguna untuk pengujian dan debugging, namun juga mencerminkan argumen kata kunci sortie untuk penulis (bila pesanan penting untuk menulis pengguna harus memiliki beberapa cara untuk mendeteksi pesanan saat membaca). Data yang dihasilkan oleh generator biner plist doest cocok dengan data yang dihasilkan oleh Kakao di OSX 10.8 (dan dihasilkan oleh skrip pembantu), saya belum sepenuhnya memperbaiki masalah itu. Plot biner yang dihasilkan dan versi Kakao keduanya dapat diurai oleh plistlib, dan menghasilkan struktur data yang sama Pelacak Python ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt milis Python-bugs-list Unsubscribe: mail. python. orgmailmanoptionspython - Bug-listlist-python-bugs40lists. gossamer-threads issue14455 plistlib tidak dapat membaca file json dan biner plist Balas ke 10 Juni 2013, 5:23 AM Posting 4 dari 7 (118 kali dilihat) Ronald Oussoren menambahkan komentarnya: 18168: request Untuk opsi sortkeys 11101: meminta opsi untuk mengabaikan Tidak ada nilai saat menulis 9256: objek datetime. datetime yang dibuat oleh plistlib tidak menyertakan informasi zona waktu (dan melihat kode Id mengatakan bahwa zona waktu diabaikan saat menulis file plist juga) 10733: Apel plist dapat membuat XML yang salah (karakter kontrol) daripada yang tidak dapat dibaca oleh plistlib Python tracker ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt daftar isi Python-bugs-list Berhenti berlangganan: mail. python. orgmailma Noptionspython-bugs-listlist-python-bugs40lists. gossamer-threads issue14455 plistlib tidak dapat membaca file json dan biner plist Dalam balasan ke Jun 10, 2013, 8:12 AM Posting 5 dari 7 (115 kali dilihat) Ronald Oussoren menambahkan komentarnya: The Uji kegagalan Im mendapatkan disebabkan oleh perbedaan urutan item yang ditulis ke arsip. Saya sedang mengerjakan perbaikan. Pelacak Python ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt milis Python-bugs-list Berhenti berlangganan: mail. python. orgmailmanoptionspython-bugs-listlist-python-bugs40lists. gossamer-threads issue14455 plistlib tidak dapat membaca file json dan biner plist In Balas ke Jun 10, 2013, 9:23 AM Posting 6 dari 7 (117 kali dilihat) Ronald Oussoren menambahkan komentar: v4 lolos tes yang disertakan. Belum selesai testsuite. Pelacak Python ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt milis Python-bugs-list Berhenti berlangganan: mail. python. orgmailmanoptionspython-bugs-listlist-python-bugs40lists. gossamer-threads issue14455 plistlib tidak dapat membaca file json dan biner plist In Balas ke 11 Jun 2013, 1:40 AM Posting 7 dari 7 (129 views) Ronald Oussoren menambahkan komentarnya: Versi kelima patch harus jauh lebih bersih. Pembersihan kode kode, kode baru menggunakan nama konformasi PEP8 untuk metode dan variabel. Secara eksplisit membuat kelas privat pribadi dengan awalan nama mereka dengan underscore (termasuk kelas parserenerator XML yang lama) Hapus dukungan dalam kode plist biner untuk set dan uuids, tidak dapat dituliskan ke file plist oleh Apples code. Tidak ada dukungan untuk JSON karena JSON juga tidak didukung oleh API milik properti Apples. Alat baris perintah plutil tidak mendukung output JSON, namun API C dan Objective-C tidak. Tidak ada dukungan untuk format OpenStep lama. Format itu didokumentasikan dengan buruk, telah lama tidak digunakan lagi, dan tulisannya tidak didukung oleh perpustakaan ples Apel. Format OpenStep juga tampaknya jauh lebih terbatas daripada dua yang modern. Patch berisi plistlib. Yang mencerminkan fungsi dengan nama yang sama dari modul acar dan json. Apakah berguna untuk menambahkan fungsi-fungsi itu ke plistlib, dan mencela fungsi yang lebih tua Keuntungan: API Cleaner Menyediakan jalan yang bersih untuk menghapus plistlib. Data dan plistlib. InternalDict (yang terakhir sudah tidak berlaku lagi) Kekurangan: - Sangat (terlalu) mendekati kode yang tidak perlu Churn Apakah menamai PlistParser dan PlistWriter ok Keduanya bersifat pribadi dan pencarian cepat di google sepertinya menunjukkan bahwa tidak ada direktori yang menggunakan kelas-kelas ini. Jika mengganti nama is ok, sebaiknya methodvariables diganti namanya menjadi gaya PEP8 Jika kata kunci default ditambahkan ke fungsi serialisasi (simular dengan kata kunci di json. dump) Saya tidak punya usecase untuk ini, satu-satunya alasan untuk menambahkan adalah konsistensi dengan Json module Jika kata kunci skipValues ​​ditambahkan ke fungsi serialisasi (untuk mengabaikan nilai yang tidak dapat diserialkan, lihat 11101) Saya tidak yakin bahwa ini akan menjadi ide bagus. Jika kata kunci checkcircular ditambahkan ke fungsi serialisasi (lagi-lagi mirip dengan kata kunci yang sama untuk json. dump) Ini akan menghindari mengandalkan batas rekursi untuk memecahkan loop tak terbatas saat membuat deretan data melingkar. Perlu memeriksa apakah plist biner dapat berisi struktur data melingkar saat ditulis menggunakan perpustakaan Apel. Pelacak Python ltreportbugs. python. orggt ltbugs. python. orgissue14455 gt Daftar nama Python-bugs-list Berhenti berlangganan: mail. python. orgmailmanoptionspython-bugs-listlist-python-bugs40lists. gossamer-threads

No comments:

Post a Comment