我有一个Python模块,它在模块目录的子目录中使用一些资源。
import os
os.path.join(os.path.dirname(__file__), 'fonts/myfont.ttf')
当我从其他地方调用模块时,它工作得很好,但在更改当前工作目录之后调用模块时,它就中断了。__file__
是一个相对路径,它没有注意到我更改了目录:
>>> mymodule.__file__
'mymodule/__init__.pyc'
>>> os.chdir('..')
>>> mymodule.__file__
'mymodule/__init__.pyc'
如何将绝对路径编码到__file__,
我如何访问模块中的资源?
发布于 2018-07-24 14:20:57
在模块的开头存储到模块目录的绝对路径:
package_directory = os.path.dirname(os.path.abspath(__file__))
之后,根据以下内容加载资源package_directory
:
font_file = os.path.join(package_directory, 'fonts', 'myfont.ttf')
毕竟,不要像当前的工作目录那样修改整个过程的资源。在编写得很好的程序中,根本不需要改变工作目录,从而避免。os.chdir()
。
https://stackoverflow.com/questions/-100005660
复制相似问题