Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengakses Fail Statik Dalam Pakej Python?

Bagaimanakah Saya Boleh Mengakses Fail Statik Dalam Pakej Python?

DDD
Lepaskan: 2024-12-12 20:38:10
asal
709 orang telah melayarinya

How Can I Access Static Files Within a Python Package?

Membaca Fail Statik dari Dalam Pakej Python

Situasi

Bayangkan pakej Python anda mengandungi fail teks templat yang anda ingin akses dari dalam anda program. Apabila menentukan laluan ke fail ini, ia menjadi perlu untuk mengendalikan struktur pakej.

TLDR: Gunakan importlib.resources (Python 3.9 )

Jika keserasian ke belakang tidak menjadi kebimbangan (iaitu, anda menggunakan Python 3.9 atau lebih tinggi), memanfaatkan importlib.resources modul.

from importlib import resources as impresources
from . import templates

inp_file = impresources.files(templates) / 'temp_file'
with inp_file.open("rt") as f:
    template = f.read()
Salin selepas log masuk

Kaedah Tradisional: Menggunakan pkg_resources daripada Setuptools

Untuk versi Python di bawah 3.9, pertimbangkan untuk menggunakan modul pkg_resources daripada alat persediaan pengedaran.

import pkg_resources

# Could be a dot-separated package/module name or a "Requirement"
resource_package = __name__
resource_path = '/'.join(('templates', 'temp_file'))  # Do not use os.path.join()
template = pkg_resources.resource_string(resource_package, resource_path)
# or for a file-like stream:
template = pkg_resources.resource_stream(resource_package, resource_path)
Salin selepas log masuk

Langkah:

  1. Cari templat anda dalam hierarki pakej:

    <your-package>
      +--<module-asking-for-the-file>
      +--templates/
           +--temp_file
    Salin selepas log masuk
  2. Rujuk fail templat menggunakan sama ada kaedah:

    • Pilihan 1 (importlib.resources):

      from . import templates
      
      inp_file = impresources.files(templates) / 'temp_file'
      Salin selepas log masuk
    • Pilihan 2 (pkg_resources):

      resource_path = '/'.join(('templates', 'temp_file'))
      template = pkg_resources.resource_string(__name__, resource_path)
      Salin selepas log masuk

Petua:

  • Untuk fail dalam modul semasa anda, gunakan pakej sebagai hujah pakej dalam importlib.resources.
  • Fungsi importlib.resources.files mengembalikan objek seperti laluan, yang membenarkan akses fail sementara berasaskan pengurus konteks.
  • Sertakan sebarang fail statik dalam setup.py anda atau MANIFEST untuk tujuan pembungkusan.
  • Pertimbangkan tetapan zip_safe=True dalam setup.py untuk mendayakan pengedaran zipapp.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Fail Statik Dalam Pakej Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan