首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当CWD更改时,如何在Python模块中使用相对路径?

当CWD更改时,如何在Python模块中使用相对路径?
EN

Stack Overflow用户
提问于 2018-07-24 04:26:19
回答 1查看 0关注 0票数 0

我有一个Python模块,它在模块目录的子目录中使用一些资源。

代码语言:txt
复制
import os
os.path.join(os.path.dirname(__file__), 'fonts/myfont.ttf')

当我从其他地方调用模块时,它工作得很好,但在更改当前工作目录之后调用模块时,它就中断了。__file__是一个相对路径,它没有注意到我更改了目录:

代码语言:txt
复制
>>> mymodule.__file__
'mymodule/__init__.pyc'
>>> os.chdir('..')
>>> mymodule.__file__
'mymodule/__init__.pyc'

如何将绝对路径编码到__file__, 我如何访问模块中的资源?

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 14:20:57

在模块的开头存储到模块目录的绝对路径:

代码语言:txt
复制
package_directory = os.path.dirname(os.path.abspath(__file__))

之后,根据以下内容加载资源package_directory:

代码语言:txt
复制
font_file = os.path.join(package_directory, 'fonts', 'myfont.ttf')

毕竟,不要像当前的工作目录那样修改整个过程的资源。在编写得很好的程序中,根本不需要改变工作目录,从而避免。os.chdir()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档