Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Mengimport Semua Modul Secara Dinamik dari Direktori dalam Python?

Bagaimanakah Saya Boleh Mengimport Semua Modul Secara Dinamik dari Direktori dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-12-04 14:51:10746semak imbas

How Can I Dynamically Import All Modules from a Directory in Python?

Memuatkan Modul Secara Dinamik daripada Direktori

Soalan:

Mengimport modul daripada direktori tertentu boleh mencabar. Pertimbangkan struktur direktori berikut:

/Foo
    bar.py
    spam.py
    eggs.py

Mengimport modul menggunakan __init__.py dan dari Foo import * tidak menghasilkan hasil yang diingini. Bagaimanakah seseorang boleh mengimport semua modul daripada direktori ini secara dinamik?

Jawapan:

Buat init__.py Fail dengan __all Pembolehubah

  1. Dalam __init__.py dalam Direktori Foo, senaraikan semua fail Python (.py) dalam folder semasa.
  2. Gunakan pembolehubah __all__ Python untuk menentukan modul yang akan diimport.
from os.path import dirname, basename, isfile, join
import glob
modules = glob.glob(join(dirname(__file__), "*.py"))
__all__ = [ basename(f)[:-3] for f in modules if isfile(f) and not f.endswith('__init__.py')]

Contoh Penggunaan:

Selepas mencipta fail __init__.py, anda kini boleh mengimport semua modul daripada direktori Foo menggunakan:

from Foo import *

Ini akan mengimport semua modul yang tersedia secara dinamik dalam direktori Foo.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengimport Semua Modul Secara Dinamik dari Direktori dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn