Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengakses Fail Statik yang Dibenamkan dalam Pakej Python?

Bagaimana untuk Mengakses Fail Statik yang Dibenamkan dalam Pakej Python?

Barbara Streisand
Barbara Streisandasal
2024-12-01 17:53:10317semak imbas

How to Access Static Files Embedded in Python Packages?

Mengambil Fail Statik Dalam Pakej Python

Isu:

Cara untuk mendapatkan semula fail yang dibungkus dalam pakej Python, memandangkan ia tidak boleh diakses melalui laluan fail standard kaedah?

Struktur Pakej:

Pertimbangkan struktur pakej di mana templat disimpan dalam folder "templat" bersarang:

<package>
  |-- <module>
  |-- templates
        |-- temp_file

Penyelesaian:

Terdapat beberapa kaedah untuk mendapatkan semula fail:

1. Menggunakan importlib.resources (Python 3.7 ):

from importlib import resources as impresources

resource_package = __name__
resource_path = "templates/temp_file"

try:
    inp_file = impresources.files(resource_package) / resource_path
    with inp_file.open("rb") as f:
        template = f.read()
except AttributeError:
    # Python < 3.9
    template = impresources.read_text(resource_package, resource_path)

2. Menggunakan pkg_resources (setuptools):

import pkg_resources

resource_package = __name__
resource_path = "/".join(("templates", "temp_file"))

template = pkg_resources.resource_string(resource_package, resource_path)

Butiran:

  • importlib.resources ialah kaedah pilihan kerana ia lebih cekap dan intuitif.
  • alat persediaan tidak boleh digunakan dalam keperluan masa jalan lagi.
  • Ingat untuk memasukkan fail statik dalam setup.py atau MANIFEST anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Fail Statik yang Dibenamkan dalam Pakej 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