Pengekodan dan Penyahkodan Bait dalam Python: Panduan Penukaran Rentetan
Objek Bytes biasanya ditemui apabila berinteraksi dengan program luaran atau mengendalikan data binari . Untuk bekerja dengan berkesan dengan mereka, penukaran kepada dan dari rentetan mungkin diperlukan. Artikel ini akan menangani masalah khusus mengenai menukar objek bait yang mengandungi output perintah luaran kepada rentetan Python biasa.
Masalah: Menukar Bait kepada Rentetan
Pertimbangkan contoh berikut daripada Python 3:
>>> from subprocess import * >>> stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0] >>> stdout b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
Pembolehubah stdout mengandungi objek bait yang mewakili output bagi arahan 'ls -l'. Untuk mencetaknya dalam format yang boleh dibaca manusia, ia perlu ditukar kepada rentetan.
Penyelesaian: Menggunakan Kaedah Nyahkod
Kaedah nyahkod() digunakan untuk menukar objek bait kepada rentetan. Ia memerlukan parameter pengekodan, yang menentukan pengekodan aksara data dalam objek bait.
>>> stdout_str = stdout.decode('utf-8') >>> print(stdout_str) -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1 -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
Dalam contoh ini, kami menentukan 'utf-8' sebagai pengekodan kerana ia adalah pengekodan biasa untuk teks data. Walau bagaimanapun, adalah penting untuk menggunakan pengekodan yang betul untuk data khusus yang sedang diproses.
Nota:
Walaupun penyelesaian di atas berfungsi dengan baik untuk menukar objek bait yang mewakili data teks , adalah penting untuk ambil perhatian bahawa bukan semua objek bait mengandungi teks. Untuk mengendalikan data binari, teknik yang berbeza mungkin diperlukan.
Atas ialah kandungan terperinci Bagaimanakah Saya Menukar Objek Bytes daripada Perintah Luaran kepada String dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!