簡體   English   中英

如何遍歷 Python 包中的資源目錄?

[英]How to walk a resource directory in a Python package?

我有一個 Python 包,其中一個資源文件夾被捆綁到構建中。 結構類似於以下內容:

package
  - resources
    - subfolder
      - resource1.txt
    - resource2.txt

我知道importlib_resources和該包的標准版本,但我需要一個相當於os.walk的資源目錄(它可能是大量嵌套的)。 有沒有辦法做到這一點? files()contents()方法似乎無法實現這一點。

經過更多研究,我相信在當前狀態下, importlib_resources不是此任務的選項。 它無法遍歷目錄。 它可能會在未來的版本中提供。

最簡單的解決方案(盡管緩慢)是pkg_resources從包裝setuptools 這個包並不是一個運行時庫,但為了這些目的,我們將它做成一個。

這是一個用於遍歷包數據目錄的片段:

import pkg_resources

RESOURCE_ROOT = "mypackage"

def walk_data(base_dir: str, path: str = "")
    for name in pkg_resources(RESOURCE_ROOT, f"{base_dir}{path}"):
        path = f"{base_dir}{path}/{name}"
        if pkg_resources.resource_isdir(RESOURCE_ROOT, path):
            walk_data(base_dir, f"{path}/{name}")
        else:
            content = pkg_resources.resource_string(RESOURCE_ROOT, path)
            # Do something with the file content

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM