Bagaimana cara melihat data header dengan python?

Modul ini adalah bagian dari API email lawas (Compat32). Dalam encoding dan decoding API saat ini header ditangani secara transparan oleh API kelas yang mirip kamus. Selain digunakan dalam kode lawas, modul ini dapat berguna dalam aplikasi yang perlu mengontrol sepenuhnya rangkaian karakter yang digunakan saat menyandikan header

Teks yang tersisa di bagian ini adalah dokumentasi asli modul

RFC 2822 adalah standar dasar yang menjelaskan format pesan email. Itu berasal dari standar RFC 822 yang lebih tua yang mulai digunakan secara luas pada saat sebagian besar email hanya terdiri dari karakter ASCII. RFC 2822 adalah spesifikasi yang ditulis dengan asumsi email hanya berisi karakter ASCII 7-bit

Tentu saja, karena email telah digunakan di seluruh dunia, itu telah menjadi internasional, sehingga kumpulan karakter khusus bahasa sekarang dapat digunakan dalam pesan email. Standar dasar masih memerlukan pesan email untuk ditransfer hanya menggunakan karakter ASCII 7-bit, jadi banyak RFC telah ditulis yang menjelaskan cara menyandikan email yang berisi karakter non-ASCII ke dalam format yang sesuai dengan RFC 2822. RFC ini termasuk RFC 2045, RFC 2046, RFC 2047, dan RFC 2231. Paket mendukung standar ini dalam dan modulnya

Jika Anda ingin menyertakan karakter non-ASCII di header email Anda, misalnya di bidang Subjek atau Ke, Anda harus menggunakan kelas dan menetapkan bidang di objek ke instance daripada menggunakan string untuk nilai header. Impor kelas dari modul. Sebagai contoh

>>> from email.message import Message >>> from email.header import Header >>> msg = Message() >>> h = Header('p\xf6stal', 'iso-8859-1') >>> msg['Subject'] = h >>> msg.as_string() 'Subject: =?iso-8859-1?q?p=F6stal?=\n\n'

Perhatikan di sini bagaimana kami ingin bidang Subjek berisi karakter non-ASCII? . Saat instance berikutnya diratakan, bidang Subjek dikodekan dengan benar oleh RFC 2047. Pembaca email yang menyadari MIME akan menampilkan header ini menggunakan karakter ISO-8859-1 yang disematkan

Berikut deskripsi kelasnya

kelas email. tajuk. Tajuk(s=Tidak ada , rangkaian karakter=Tidak ada , maxlinelen=Tidak ada , header_name=Tidak ada , continuation_ws=' ' , kesalahan='ketat')

Buat header yang sesuai dengan MIME yang dapat berisi string dalam kumpulan karakter yang berbeda

Opsional s adalah nilai tajuk awal. Jika >>> from email.header import decode_header >>> decode_header('=?iso-8859-1?q?p=F6stal?=') [(b'p\xf6stal', 'iso-8859-1')] 6 (default), nilai header awal tidak disetel. Anda nanti dapat menambahkan ke header dengan pemanggilan metode. s mungkin turunan dari atau , tetapi lihat dokumentasi untuk semantik

Charset opsional melayani dua tujuan. itu memiliki arti yang sama dengan argumen charset untuk metode ini. Itu juga menetapkan set karakter default untuk semua panggilan berikutnya yang menghilangkan argumen charset. Jika rangkaian karakter tidak disediakan di konstruktor (default), rangkaian karakter email.header3 digunakan baik sebagai rangkaian karakter awal s dan sebagai default untuk panggilan berikutnya

Panjang garis maksimum dapat ditentukan secara eksplisit melalui maxlinelen. Untuk memisahkan baris pertama ke nilai yang lebih pendek (untuk memperhitungkan tajuk bidang yang tidak termasuk dalam s, e. g. Subjek) berikan nama bidang di header_name. Maxlinelen default adalah 76, dan nilai default untuk header_name adalah >>> from email.header import decode_header >>> decode_header('=?iso-8859-1?q?p=F6stal?=') [(b'p\xf6stal', 'iso-8859-1')] 6, artinya tidak diperhitungkan untuk baris pertama dari header yang panjang dan terpisah

Kelanjutan_ws opsional harus spasi putih lipat yang sesuai dengan RFC 2822, dan biasanya berupa spasi atau karakter hard tab. Karakter ini akan diawali dengan garis lanjutan. kelanjutan_ws default ke karakter spasi tunggal

Kesalahan opsional diteruskan langsung ke metode

tambahkan(s , rangkaian karakter=Tidak ada , kesalahan='ketat')

Tambahkan string s ke header MIME

Rangkaian karakter opsional, jika diberikan, harus berupa turunan (lihat ) atau nama rangkaian karakter, yang akan diubah menjadi turunan. Nilai >>> from email.header import decode_header >>> decode_header('=?iso-8859-1?q?p=F6stal?=') [(b'p\xf6stal', 'iso-8859-1')] _6 (default) berarti rangkaian karakter yang diberikan dalam konstruktor digunakan

s mungkin turunan dari atau. Jika ini adalah instance dari , maka charset adalah pengkodean dari string byte itu, dan a akan dimunculkan jika string tidak dapat didekodekan dengan set karakter tersebut

Jika s adalah instance dari , maka charset adalah petunjuk yang menentukan set karakter dari karakter dalam string

Dalam kedua kasus tersebut, saat membuat header yang sesuai dengan RFC 2822 menggunakan aturan RFC 2047, string akan dikodekan menggunakan codec keluaran dari rangkaian karakter. Jika string tidak dapat dikodekan menggunakan codec keluaran, UnicodeError akan dimunculkan

Kesalahan opsional diteruskan sebagai argumen kesalahan ke panggilan dekode jika s adalah string byte

enkode(pembagi=';, \t' , maxlinelen=Tidak ada , barissep='\n')

Mengkodekan header pesan ke dalam format yang sesuai dengan RFC, mungkin membungkus garis panjang dan mengenkapsulasi bagian non-ASCII di base64 atau pengkodean yang dapat dicetak dengan kutipan

Splitchars opsional adalah string yang berisi karakter yang harus diberi bobot ekstra oleh algoritme pemisahan selama pembungkusan header normal. Ini sangat mendukung 'jeda sintaksis tingkat tinggi' RFC 2822. titik pisah yang didahului oleh splitchar lebih disukai selama pemisahan baris, dengan karakter yang lebih disukai dalam urutan kemunculannya dalam string. Spasi dan tab dapat disertakan dalam string untuk menunjukkan apakah preferensi harus diberikan kepada yang satu di atas yang lain sebagai titik pisah ketika karakter pisah lainnya tidak muncul di baris yang sedang dipisah. Splitchars tidak memengaruhi baris yang disandikan RFC 2047

maxlinelen, jika diberikan, menimpa nilai instans untuk panjang baris maksimum

linesep menentukan karakter yang digunakan untuk memisahkan baris dari header yang dilipat. Ini default ke nilai yang paling berguna untuk kode aplikasi Python (Compat326), tetapi Compat327 dapat ditentukan untuk menghasilkan header dengan pemisah garis yang sesuai dengan RFC

Berubah di versi 3. 2. Menambahkan argumen linesep.

Kelas juga menyediakan sejumlah metode untuk mendukung operator standar dan fungsi bawaan

__str__()

Mengembalikan perkiraan sebagai string, menggunakan panjang garis tak terbatas. Semua bagian dikonversi ke unicode menggunakan pengkodean yang ditentukan dan digabungkan bersama dengan tepat. Setiap bagian dengan rangkaian karakter EmailMessage0 didekodekan sebagai ASCII menggunakan penangan kesalahan EmailMessage1

Berubah di versi 3. 2. Menambahkan penanganan untuk rangkaian karakter EmailMessage0.

__eq__(lainnya)

Metode ini memungkinkan Anda untuk membandingkan dua contoh untuk kesetaraan

__ne__(lainnya)

Metode ini memungkinkan Anda untuk membandingkan dua contoh ketidaksetaraan

Modul ini juga menyediakan fungsi praktis berikut

email. tajuk. decode_header(tajuk)

Dekode nilai header pesan tanpa mengonversi rangkaian karakter. Nilai tajuk ada di tajuk

Fungsi ini mengembalikan daftar EmailMessage_6 pasangan yang berisi masing-masing bagian yang didekodekan dari header. charset adalah >>> from email.header import decode_header >>> decode_header('=?iso-8859-1?q?p=F6stal?=') [(b'p\xf6stal', 'iso-8859-1')] 6 untuk bagian header yang tidak disandikan, jika tidak, string huruf kecil berisi nama set karakter yang ditentukan dalam string yang disandikan

Ini sebuah contoh

>>> from email.header import decode_header >>> decode_header('=?iso-8859-1?q?p=F6stal?=') [(b'p\xf6stal', 'iso-8859-1')] _

email. tajuk. make_header(decoded_seq , maxlinelen=Tidak ada , header_name=Tidak ada , continuation_ws=' ')

Buat instance dari urutan pasangan seperti yang dikembalikan oleh

mengambil string nilai header dan mengembalikan urutan pasangan format EmailMessage6 di mana charset adalah nama set karakter

Fungsi ini mengambil salah satu urutan pasangan tersebut dan mengembalikan sebuah instance. Maxlinelen opsional, nama_tajuk, dan kelanjutan_ws seperti pada konstruktor

Bagaimana cara mengakses data header dengan Python?

Untuk meneruskan header HTTP ke permintaan GET menggunakan pustaka permintaan Python, Anda dapat menggunakan parameter headers= di. fungsi get() . Parameter menerima kamus Python dari pasangan kunci-nilai, di mana kunci mewakili jenis tajuk dan nilainya adalah nilai tajuk.

Bagaimana cara mengakses nilai tajuk?

get() Metode get() antarmuka Header mengembalikan string byte dari semua nilai header di dalam objek Header dengan nama tertentu. Jika header yang diminta tidak ada di objek Headers, ia mengembalikan null. Untuk alasan keamanan, beberapa header hanya dapat dikontrol oleh agen pengguna.

Bagaimana cara mencetak tajuk dengan Python?

kolom untuk mencetak nama kolom dengan Python. Kita bisa menggunakan panda. kerangka data. variabel kolom untuk mencetak tag kolom atau header dengan mudah.

Bagaimana cara mendapatkan header API dengan Python?

Anda dapat meneruskan tajuk HTTP ke metode Pustaka Permintaan Python menggunakan parameter tajuk = . Header diteruskan sebagai kamus nama header. pasangan nilai tajuk. Pustaka Permintaan tidak mengubah perilakunya tergantung pada tajuk yang diteruskan tetapi hanya mengalihkannya ke server.

Postingan terbaru

LIHAT SEMUA