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

Bagaimanakah Saya Boleh Mengimport Semua Modul dengan Cekap dari Direktori dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-11-27 21:15:10437semak imbas

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

Memuatkan Semua Modul dalam Folder

Mengimport direktori modul boleh menjadi cara mudah untuk mengurus sejumlah besar modul berkaitan. Walau bagaimanapun, menggunakan piawaian daripada pernyataan boleh mengakibatkan tingkah laku yang tidak dijangka, seperti yang dilihat dalam contoh berikut:

/Foo
    bar.py
    spam.py
    eggs.py

Menambah fail __init__.py dan menggunakan daripada Foo import * mungkin tidak menghasilkan hasil yang diingini.

Penyelesaian: Menjana semua Pembolehubah

Untuk memuatkan semua modul dalam folder dengan betul, anda boleh menggunakan kaedah berikut:

  1. Senaraikan semua fail Python (.py) dalam folder.
  2. Buat pembolehubah semua dalam __init__.py.
  3. Isi semua dengan nama asas setiap fail, mengalih keluar sambungan .py.

Berikut ialah kod Python untuk penyelesaian ini:

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')]

Penyelesaian ini akan buat senarai nama modul secara dinamik dan tetapkan kepada semua dalam __init__.py. Ini membolehkan anda mengimport semua modul dalam folder dengan hanya menggunakan daripada Foo import *.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengimport Semua Modul dengan Cekap 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