باز کردن یک پرونده فشردهشده با bzip2 در حالت دودویی.
اگر filename یک شیء str یا bytes باشد، پرونده نامگذاریشده مستقیماً باز میشود. در غیر این صورت، filename باید یک file object باشد که برای خواندن یا نوشتن دادههای فشرده استفاده میشود.
آرگومان mode میتواند 'r' برای خواندن (پیشفرض)، 'w' برای بازنویسی، 'x' برای ایجاد انحصاری، یا 'a' برای الحاق باشد. این موارد میتوانند بهطور معادل بهترتیب بهصورت 'rb'، 'wb'، 'xb' و 'ab' داده شوند.
اگر filename یک شیء پرونده باشد (نه یک نام پرونده واقعی)، حالت 'w' پرونده را کوتاه نمیکند و در عوض معادل 'a' است.
اگر mode برابر 'w' یا 'a' باشد، compresslevel میتواند عدد صحیحی بین 1 و 9 باشد که سطح فشردهسازی را مشخص میکند: 1 کمترین میزان فشردهسازی را ایجاد میکند و 9 (پیشفرض) بیشترین میزان فشردهسازی را ایجاد میکند.
اگر mode برابر 'r' باشد، پرونده ورودی ممکن است حاصل الحاق چند جریان فشرده باشد.
کلاس BZ2File تمام اعضای مشخصشده توسط io.BufferedIOBase را فراهم میکند، بهجز detach() و truncate(). پیمایش و دستور with پشتیبانی میشوند.
BZ2File همچنین متدها و ویژگیهای زیر را ارائه میدهد:
-
peek([n])¶
دادههای بافرشده را بدون جلو بردن موقعیت پرونده برمیگرداند. حداقل یک بایت داده برگردانده خواهد شد (مگر در EOF). تعداد دقیق بایتهای برگرداندهشده نامشخص است.
نکته
اگرچه فراخوانی peek() موقعیت فایلِ BZ2File را تغییر نمیدهد، اما ممکن است موقعیت شیء پرونده زیربنایی را تغییر دهد (برای مثال، اگر BZ2File با ارسال یک شیء پرونده برای filename ساخته شده باشد).
-
fileno()¶
توصیفگر پرونده مربوط به پرونده زیربنایی را برمیگرداند.
-
readable()¶
برمیگرداند که آیا پرونده برای خواندن باز شده است.
-
seekable()¶
برمیگرداند که آیا پرونده از مکانیابی (seeking) پشتیبانی میکند.
-
writable()¶
برمیگرداند که آیا پرونده برای نوشتن باز شده است یا خیر.
-
read1(size=-1)¶
تا size بایت فشردهنشده را میخواند، در حالی که تلاش میکند از انجام چندین عملیات خواندن از جریان زیرین اجتناب کند. اگر size منفی باشد، تا اندازهی یک بافر داده میخواند.
اگر پرونده در EOF باشد، b'' را برمیگرداند.
-
readinto(b)¶
بایتها را در b بخوانید.
تعداد بایتهای خواندهشده را برمیگرداند (۰ برای EOF).
-
mode¶
'rb' برای خواندن و 'wb' برای نوشتن.
اضافه شده در نسخهی 3.13.
-
name¶
نام پرونده bzip2. معادل ویژگی name در file object زیربنایی است.
اضافه شده در نسخهی 3.13.
تغییر یافته در نسخهی 3.1: پشتیبانی از دستور with افزوده شد.
تغییر یافته در نسخهی 3.3: پشتیبانی برای اینکه filename بهجای یک نام پرونده واقعی، یک file object باشد، اضافه شد.
حالت 'a' (الحاق) افزوده شد، به همراه پشتیبانی از خواندن پروندههای چندجریانی (multi-stream).
تغییر یافته در نسخهی 3.4: حالت 'x' (ایجاد انحصاری) افزوده شد.
تغییر یافته در نسخهی 3.5: متد read() اکنون آرگومانی با مقدار None را میپذیرد.
تغییر یافته در نسخهی 3.9: پارامتر buffering حذف شده است. این پارامتر از Python 3.0 نادیده گرفته میشد و منسوخ بود. برای کنترل چگونگی باز شدن پرونده، یک شیء پرونده باز را پاس دهید.
پارامتر compresslevel فقط کلیدواژهای شد.
تغییر یافته در نسخهی 3.10: این کلاس در مواجهه با چندین خواننده یا نویسنده همزمان، از نظر نخی ایمن نیست، همانطور که کلاسهای معادل آن در gzip و lzma همیشه بودهاند.