Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python包中遍历资源目录?_Python - Fatal编程技术网

如何在Python包中遍历资源目录?

如何在Python包中遍历资源目录?,python,Python,我有一个Python包,其中一个资源文件夹被捆绑到构建中。结构类似于以下内容: package - resources - subfolder - resource1.txt - resource2.txt 我知道importlib_resources和该软件包的标准版本,但我需要一个与资源目录相当的os.walk(它可能嵌套得很重)。有没有办法做到这一点?files()和contents()方法似乎无法实现这一点。经过更多的研究,我相信在当前状态下,impor

我有一个Python包,其中一个资源文件夹被捆绑到构建中。结构类似于以下内容:

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

我知道
importlib_resources
和该软件包的标准版本,但我需要一个与资源目录相当的
os.walk
(它可能嵌套得很重)。有没有办法做到这一点?
files()
contents()
方法似乎无法实现这一点。

经过更多的研究,我相信在当前状态下,
importlib\u resources
不是此任务的选项。它无法向下遍历目录。它可能在将来的版本中提供

最简单的解决方案(尽管速度较慢)是来自软件包
setuptools
pkg\u资源。这个包并不意味着是一个运行时库,但出于这些目的,我们将使它成为一个运行时库

以下是用于遍历包数据目录的代码段:

导入pkg\u资源
RESOURCE\u ROOT=“mypackage”
def walk_数据(基本目录:str,路径:str=”“)
对于pkg_资源中的名称(资源_根,f“{base_dir}{path}”):
path=f“{base_dir}{path}/{name}”
如果pkg_resources.resource_isdir(resource_ROOT,path):
walk_data(base_dir,f“{path}/{name}”)
其他:
content=pkg\u resources.resource\u字符串(resource\u根,路径)
#对文件内容执行一些操作

所需的输出是什么?最后,我想读取目录中所有文件的内容。目的是将它们复制到另一个位置。因此,文件名生成器可以工作吗?是的,只要它可以用于任何Python包。请记住,包可以压缩,因此使用
importlib
是非常必要的(除非有其他可靠的替代方案)。