如何确保python找到必要的数据文件?

激励G

请考虑以下脚本:

$ tree my_application 
my_application
├── my_application
│   ├── sound.mp3
│   ├── __init__.py
│   ├── my_application.py
│   ├── my_application.pyc
│   └── __pycache__
│       ├── __init__.cpython-34.pyc
│       └── my_application.cpython-34.pyc
├── my_application.egg-info
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── PKG-INFO
│   ├── requires.txt
│   ├── SOURCES.txt
│   └── top_level.txt
├── run.py
├── MANIFEST.in
└── setup.py

my_application.py是只sound.mp3使用mplayer以下脚本播放的脚本

class Sound():
    def __init__(self):
        self.cmd = ["mplayer", "sound.mp3"]            
    def play(self):
        subprocess.Popen(self.cmd)

setup.py是您的经典setup.py文件,带有console_scriptmy_application:main

MANIFEST.in包含sound.mp3对确保在运行时将其复制的引用setup.py

include my_application/sound.mp3
global-exclude *.pyc

run.py包含一小段代码来运行以下main()功能my_application

from my_application import main

if __name__ == "__main__":
    main()

还有一个__init__.py文件,因此该main()功能可以正确显示给“外部世界”:

from .my_application import main

__all__ = ["main"]

现在,当我main()在内部my_application目录中运行函数时,此脚本可以工作但是一旦该功能从其他地方运行(例如通过运行run.py或使用控制台脚本),就会mplayer抱怨找不到sound.mp3

Cannot open file 'sound.mp3': No such file or directory

无论我位于哪个目录,如何确保都能mplayer找到sound.mp3

安德里亚·科贝里尼(Andrea Corbellini)

如果使用setuptools,则可以使用pkg_resources来检索文件的正确路径:

import pkg_resources

class Sound():
    def __init__(self):
        sound_path = pkg_resources.resource_filename(
            'my_application', 'sound.mp3')
        self.cmd = ['mplayer', sound_path]

    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将文件正确保存在数据文件夹中

来自分类Dev

Django python manage.py runserver给出异常数据文件未找到,数据文件生成失败

来自分类Dev

未找到参考的元数据文件

来自分类Dev

如何在Python中正确加载数据文件

来自分类Dev

如何在Python的类中读取数据文件?

来自分类Dev

如何用Python绘制结构化数据文件?

来自分类Dev

如何在Dancer中找到要在Javascript中使用的数据文件的路径?

来自分类Dev

在读取数据文件的同时,如何找到用户字符串输入的字谜?

来自分类Dev

如何从数据文件读入向量结构

来自分类Dev

如何摆脱“ Outlook数据文件”?

来自分类Dev

如何从数据文件中减去常数?

来自分类Dev

如何迭代处理大数据文件?

来自分类Dev

如何从数据文件读入向量结构

来自分类Dev

如何使用宏引用数据文件?

来自分类Dev

从python包中访问数据文件

来自分类Dev

数据文件中的Python Matplotlib IMShow

来自分类Dev

在python中分割大数据文件

来自分类Dev

在python中解析通用数据文件

来自分类Dev

python:多列pandas数据文件

来自分类Dev

在python中解析csv数据文件

来自分类Dev

Python & Pandas:读取数据时如何跳过创建中间数据文件?

来自分类Dev

如何使用python将头文件与数据文件结合在一起?

来自分类Dev

合并数据文件

来自分类Dev

如何在python中流式处理和处理大型数据文件

来自分类Dev

如何使用Python在.Wav中转换音频的原始数据文件

来自分类Dev

如何将数据文件的两列相乘并在python中添加它们?

来自分类Dev

python如何每100步打开2个数据文件

来自分类Dev

如何删除数据文件夹中的文件?

来自分类Dev

如何获取HTML标记的“数据文件”属性的内容

Related 相关文章

热门标签

归档