首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python访问项目根目录

Python访问项目根目录
EN

Stack Overflow用户
提问于 2017-12-13 06:43:43
回答 2查看 17K关注 0票数 10

在我的应用程序的文件夹结构下:

代码语言:javascript
复制
rootfolder
          /subfolder1/
          /subfolder2
          /subfolder3/test.py

我在subfolder3中的代码。但是我想把代码的输出写成subfolder1

代码语言:javascript
复制
script_dir = os.path.dirname(__file__)

full_path = os.path.join(script_dir,'/subfolder1/')

我想知道如何在不导入目录的完整路径的情况下做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-13 06:55:46

听起来你想要的东西大概是

代码语言:javascript
复制
project_root = os.path.dirname(os.path.dirname(__file__))
output_path = os.path.join(project_root, 'subfolder1')

project_root设置为脚本父文件夹上方的文件夹,该文件夹与您的描述相匹配。然后,输出文件夹转到该文件夹下的subfolder1

我也会将我的import重新表述为

代码语言:javascript
复制
from os.path import dirname, join

这会将您的代码缩短为

代码语言:javascript
复制
project_root = dirname(dirname(__file__))
output_path = join(project_root, 'subfolder1')

我发现这个版本更容易阅读。

票数 8
EN

Stack Overflow用户

发布于 2017-12-13 09:56:17

完成这个任务的最好方法是把你的项目变成一个模块。Python使用一个__init__.py文件来识别这个设置。因此,我们可以简单地在根目录下创建一个空的__init__.py文件。该结构将如下所示:

代码语言:javascript
复制
rootfolder
          /subfolder1/
          /subfolder2
          /subfolder3/test.py
          __init__.py

完成后,您可以引用任何子文件夹,如下所示:

代码语言:javascript
复制
subfolder1/output.txt

因此,您的脚本将如下所示:

代码语言:javascript
复制
f = open("subfolder1/output.txt", "w+")
f.write("works!")
f.close()
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47782780

复制
相关文章

相似问题

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