importlib.resources.abc -- کلاسهای پایه انتزاعی برای منابع¶
کد منبع: Lib/importlib/resources/abc.py
اضافه شده در نسخهی 3.11.
- class importlib.resources.abc.ResourceReader¶
جایگزینشده با TraversableResources
یک کلاس پایه انتزاعی برای فراهم کردن امکان خواندن منابع.
از دیدگاه این ABC، یک منبع یک مصنوع دودویی است که درون یک بسته گنجانده شده است. معمولاً این چیزی مانند یک پرونده داده است که در کنار پرونده
__init__.pyآن بسته قرار دارد. هدف این کلاس کمک به انتزاع دسترسی به چنین پروندههای دادهای است، بهطوری که مهم نباشد بسته و پرونده(های) دادهی آن مثلاً در یک پرونده zip ذخیره شدهاند یا روی سامانه فایلبندی.برای هر یک از متدهای این کلاس، انتظار میرود آرگومان resource یک شیء شبهمسیر باشد که از نظر مفهومی صرفاً یک نام پرونده را نشان میدهد. این بدان معناست که نباید هیچ مسیر زیرپوشهای در آرگومان resource گنجانده شود. این به آن دلیل است که مکان بستهای که خواننده به آن تعلق دارد، بهعنوان «پوشه» عمل میکند. بر این اساس، پوشهها و نام پروندهها بهترتیب به بستهها و منابع تشبیه شدهاند. به همین دلیل نیز انتظار میرود نمونههای این کلاس مستقیماً به بستهای مشخص مرتبط باشند (بهجای آنکه بتوانند چندین بسته یا یک ماژول را نشان دهند).
انتظار میرود بارگذارهایی که میخواهند از خواندن منابع پشتیبانی کنند، متدی به نام
get_resource_reader(fullname)ارائه دهند که شیءای را برمیگرداند که رابط این ABC را پیادهسازی میکند. اگر ماژول مشخصشده با fullname یک بسته نباشد، این متد بایدNoneرا برگرداند. شیءای سازگار با این ABC باید تنها زمانی برگردانده شود که ماژول مشخصشده یک بسته باشد.منسوخ شده از نسخهی 3.12: بهجای آن از
importlib.resources.abc.TraversableResourcesاستفاده کنید.- abstractmethod open_resource(resource)¶
یک شیء شبهپرونده بازشده برای خواندن منبع بهصورت دودویی برمیگرداند.
اگر منبع یافت نشود،
FileNotFoundErrorپرتاب میشود.
- abstractmethod resource_path(resource)¶
مسیر سامانه فایلبندی برای resource را برمیگرداند.
اگر منبع بهطور مشخص در سامانه فایلبندی وجود ندارد،
FileNotFoundErrorرا پرتاب کنید.
- abstractmethod is_resource(path)¶
اگر مسیر مشخصشده با path یک منبع در نظر گرفته شود،
Trueبرگردانده میشود. اگر path وجود نداشته باشد،FileNotFoundErrorپرتاب میشود.تغییر یافته در نسخهی 3.10: آرگومان name به path تغییر نام یافت.
- abstractmethod contents()¶
یک پیمایشپذیر از رشتهها بر روی محتوای بسته برمیگرداند. توجه داشته باشید که لازم نیست همهی نامهایی که پیمایشگر برمیگرداند، منابع واقعی باشند، برای مثال، برگرداندن نامهایی که
is_resource()برای آنها نادرست باشد، قابل قبول است.مجاز بودن برگرداندن نامهای غیرمنبع به منظور پوشش موقعیتهایی است که نحوه ذخیرهسازی یک بسته و منابع آن از پیش مشخص است و نامهای غیرمنبع مفید خواهند بود. برای مثال، برگرداندن نامهای زیرپوشه مجاز است تا در صورتی که مشخص است بسته و منابع در سامانه فایلبندی ذخیره شدهاند، بتوان مستقیماً از آن نامهای زیرپوشه استفاده کرد.
این متد انتزاعی یک پیمایشپذیر بدون هیچ آیتمی بازمیگرداند.
- class importlib.resources.abc.Traversable¶
یک شیء با زیرمجموعهای از متدهای
pathlib.Pathکه برای پیمایش پوشهها و باز کردن پروندهها مناسب است.برای بازنمایی شیء در سامانه فایلبندی، از
importlib.resources.as_file()استفاده کنید.- name¶
انتزاعی. نام پایهی این شیء بدون هیچ ارجاعی به والد.
- abstractmethod iterdir()¶
اشیای Traversable در self را yield میکند.
- abstractmethod is_dir()¶
اگر self یک پوشه باشد،
Trueرا برمیگرداند.
- abstractmethod is_file()¶
اگر self یک پرونده باشد،
Trueرا برمیگرداند.
- abstractmethod joinpath(*pathsegments)¶
پوشهها را بر اساس pathsegments پیمایش میکند و نتیجه را بهعنوان
Traversableبرمیگرداند.هر آرگومان pathsegments میتواند شامل چندین نام باشد که با اسلشهای رو به جلو (
/،posixpath.sep) از هم جدا شدهاند. برای مثال، موارد زیر معادل هستند:files.joinpath('subdir', 'subsuddir', 'file.txt') files.joinpath('subdir/subsuddir/file.txt')
توجه داشته باشید که برخی پیادهسازیهای
Traversableممکن است به آخرین نسخهی پروتکل بهروزرسانی نشده باشند. برای سازگاری با چنین پیادهسازیهایی، برای هر فراخوانیjoinpathیک آرگومان واحد بدون جداکنندههای مسیر ارائه دهید. برای مثال:files.joinpath('subdir').joinpath('subsubdir').joinpath('file.txt')
تغییر یافته در نسخهی 3.11:
joinpathچندین pathsegments را میپذیرد، و این بخشها میتوانند شامل اسلشهای رو به جلو بهعنوان جداکنندههای مسیر باشند. پیشتر، تنها یک آرگومان child پذیرفته میشد.
- abstractmethod __truediv__(child)¶
برگرداندن فرزند Traversable در self. معادل
joinpath(child).
- abstractmethod open(mode='r', *args, **kwargs)¶
mode میتواند 'r' یا 'rb' باشد تا بهصورت متنی یا دودویی باز شود. دستهای مناسب برای خواندن برمیگرداند (مشابه
pathlib.Path.open).هنگام باز کردن بهصورت متن، پارامترهای کدگذاری را میپذیرد، مانند آنهایی که
io.TextIOWrapperمیپذیرد.
- read_bytes()¶
محتویات self را بهصورت بایت بخوانید.
- read_text(encoding=None)¶
محتوای self را بهصورت متن بخوانید.
- class importlib.resources.abc.TraversableResources¶
یک کلاس پایه انتزاعی برای خوانندههای منابعی که قادر به ارائه رابط
importlib.resources.files()هستند. این کلاس، زیرکلاسی ازResourceReaderاست و پیادهسازیهای مشخصی از متدهای انتزاعیResourceReaderرا ارائه میدهد. بنابراین، هر بارگذاری کهTraversableResourcesرا فراهم کند،ResourceReaderرا نیز فراهم میکند.انتظار میرود بارگذارهایی که مایل به پشتیبانی از خواندن منابع هستند، این رابط را پیادهسازی کنند.
- abstractmethod files()¶
یک شیء
importlib.resources.abc.Traversableبرای بسته بارگذاریشده برمیگرداند.