Python - 设置项目目录的路径

Posted

技术标签:

【中文标题】Python - 设置项目目录的路径【英文标题】:Python - set path to the directory in project 【发布时间】:2016-12-03 00:31:30 【问题描述】:

我创建了一个项目,我的 main.py 脚本位于根文件夹 Project 中。我里面有一个utils 目录,我想获取这个目录的路径。我创建了一个函数,将.pdf 文件保存在我的 utils 目录中:

with open(os.path.abspath('utils/' + self.object.object_name+ '.pdf'), 'wb') as f:
                f.write(pdf)

但我得到一个错误:

IOError: [Errno 2] 没有这样的文件或目录:'/home/documents/office/projects/me/utils/d.pdf'

我怎样才能改变os.path.abspath 以正确地做到这一点? 我想一直进入utils 目录。

【问题讨论】:

abspath 为您提供所提供路径的绝对路径;即使可以,为什么还要改变它的功能?如果您需要不同的目录,请提供/计算它; abspath 对此无济于事。 我想我可以使用os.path.basenameos.path.dirname 来改进 utils 目录可以从任何放置根文件夹的地方调用 这些功能是您提取关于路径的信息,而不是定义路径。 那么为什么我在使用abspath时会出现这个错误? 【参考方案1】:

您需要定义路径。而且你可以保持相对。

yourPath = './utils/'
yourFileName = self.object.object_name+ '.pdf'

yourFullFileName = yourPath+yourFileName

最后

with open(yourFullFileName, 'wb') as f:
            f.write(pdf)

更新

按照斯科特亨特给我的小课程,(参见他的评论)我弥补了。因此,构建路径的正确方法是:

working_dir = os.path.dirname(__file__)# __file__ is the full name of your working script
yourFullFileName = os.path.join(working_dir, 'util', self.object.object_name + "." + 'pdf')

通过这样做,没有关于(依赖于操作系统的)分隔符的假设。

【讨论】:

这不是你应该构建路径的方式,./utilsutils 是等价的(假设你不应该,/ 是路径分隔符)。 @ScottHunter。通过“假设,[...],/ 是路径分隔符”,你的意思是我应该使用 os.sep 吗?我认为正斜杠字符在相对路径中使用时始终有效,对于任何操作系统。不是这样吗?

以上是关于Python - 设置项目目录的路径的主要内容,如果未能解决你的问题,请参考以下文章

Python Django 之 静态文件存放设置

vscode中配置@路径提示

idea如何将idea的项目路径设置成代码目录和配置文件目录

VS2005 软件项目目录设置

python项目_调整目录

pycharm快捷键常用设置配置管理(转载)自己看的