ساختار ورودی/خروجی

I/O Plugin Infrastructure

یک افزونه از دو فایل منبع و توصیف کننده .ini تشکیل شده است. فرض کنید ما می خواهیم افزونه ای برای نمایش با استفاده از matplotlib ارائه دهیم. با افزونه mpl این کار را انجام می دهیم:

skimage/io/_plugins/mpl.py
skimage/io/_plugins/mpl.ini

نام فایل های .py و .ini باید مطابقت داشته باشد. در داخل فایل .ini، متا داده های افزونه ارائه می شود:

[mpl] <-- name of the plugin, may be anything
description = Matplotlib image I/O plugin
provides = imshow <-- a comma-separated list, one or more of
                      imshow, imsave, imread, _app_show

خط "provides" تمام توابع ارائه شده توسط افزونه را لیست می کند. از آنجا که افزونه ما imshow را ارائه می دهد، باید آن را در mpl.py تعریف کنیم:

# This is mpl.py

import matplotlib.pyplot as plt

def imshow(img):
    plt.imshow(img)

توجه داشته باشید که به طور پیش فرض، imshow مسدود نیست، بنابراین یک تابع ویژه _app_show باید برای مسدود کردن GUI ارائه شود. ما می توانیم افزونه خود را تغییر دهیم تا به شرح زیر ارائه شود:

[mpl]
provides = imshow, _app_show
# This is mpl.py

import matplotlib.pyplot as plt

def imshow(img):
    plt.imshow(img)

def _app_show():
    plt.show()

هرگونه افزونه در فهرست _plugins پس از وارد شدن به طور خودکار توسط skimage.io بررسی می شود. می توانید تمام افزونه های سیستم خود را لیست کنید:

یا فقط مواردی که قبلاً بارگیری شده اند:

یک افزونه با استفاده از دستور use_plugin بارگیری می شود:

یا

توجه داشته باشید که اگر بیش از یک افزونه عملکرد خاصی را ارائه دهد، آخرین افزونه بارگیری شده استفاده می شود.

برای پرسش از قابلیت های یک افزونه، از plugin_info استفاده کنید:

این بخش به پایان رسید اگر سوالی در ارتباط با هر یک از بخش های بالا دارید در بخش issueها از من بپرسید.

Last updated

Was this helpful?