gpt4 book ai didi

python - 迭代 package_data 文件并将它们复制到当前工作目录

转载 作者:行者123 更新时间:2023-12-05 07:09:30 26 4
gpt4 key购买 nike

背景

我正在开发一个目录结构大致如下的 python 包:

mossutils/
setup.py
mossutils/
__init__.py
init.py
data/
style.css
script.js
...

我的包的 setup.py 声明了 console_scripts 并包含了 package_data 文件:

setup(
name='mossutils',
packages=['mossutils'],
package_data={"mossutils": ["data/*"]},
entry_points = {
"console_scripts": ['mu-init = mossutils.init:main']
},
...)

通过 pip install 安装包按预期工作:所有内容都安装在我的 Python 的 Lib\site-packages 中,包括 data 目录以及其中的所有文件和脚本 mu-init 都可以从 shell 执行(或者更确切地说,命令提示符,因为我使用的是 Windows)。

目标

脚本 mu-init 应该在调用它的当前工作目录中执行某种项目脚手架。特别是,它应该将所有 package_data 文件(data/style.cssdata/script.js、...)复制到当前目录。

解决方案尝试

使用模块 pkgutil ,我可以读取文件的内容,例如

import pkgutil
...
data = pkgutil.get_data(__name__, "data/style.css")

问题

  1. 有没有办法让我的 init.py 脚本迭代 data 目录的内容,不对文件名进行硬编码(在 init.py 中)?

  2. 能否将 data 目录中的文件复制到当前工作目录,无需打开源文件,读取内容,并将其写入目标文件?

最佳答案

您可以使用 pkg_resources 库获取目录中的文件列表,该库与 setuptools 一起分发。

import pkg_resources

pkg_resources.resource_listdir("mossutils", "data")

关于python - 迭代 package_data 文件并将它们复制到当前工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61531935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com