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.basename
或os.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')
通过这样做,没有关于(依赖于操作系统的)分隔符的假设。
【讨论】:
这不是你应该构建路径的方式,./utils
和 utils
是等价的(假设你不应该,/
是路径分隔符)。
@ScottHunter。通过“假设,[...],/
是路径分隔符”,你的意思是我应该使用 os.sep
吗?我认为正斜杠字符在相对路径中使用时始终有效,对于任何操作系统。不是这样吗?以上是关于Python - 设置项目目录的路径的主要内容,如果未能解决你的问题,请参考以下文章