我的应用程序的文件夹结构:
rootfolder
/subfolder1/
/subfolder2
/subfolder3/test.py
我的代码在子文件夹3中。但我想将代码的输出写入subfolder1
。
script_dir = os.path.dirname(__file__)
full_path = os.path.join(script_dir,'/subfolder1/')
我想知道如何在不导入目录的完整路径的情况下执行此操作。
答案 0 :(得分:2)
听起来你想要的东西是
project_root = os.path.dirname(os.path.dirname(__file__))
output_path = os.path.join(project_root, 'subfolder1')
project_root
设置为上面的文件夹您脚本的父文件夹,该文件夹与您的说明相匹配。然后输出文件夹转到subfolder1
下。
我还将我的导入改为
from os.path import dirname, join
将您的代码缩短为
project_root = dirname(dirname(__file__))
output_path = join(project_root, 'subfolder1')
我觉得这个版本更容易阅读。
答案 1 :(得分:-2)
完成此任务的最佳方法是将项目转变为模块。 Python使用__init__.py
文件来识别此设置。所以我们可以简单地在根目录下创建一个空的__init__.py
文件。结构看起来像:
rootfolder
/subfolder1/
/subfolder2
/subfolder3/test.py
__init__.py
完成后,您可以引用任何子文件夹,如下所示:
subfolder1/output.txt
因此,您的脚本看起来像这样:
f = open("subfolder1/output.txt", "w+")
f.write("works!")
f.close()