避免硬编码以获取Python文件路径

避免硬编码以获取Python文件路径,python,operating-system,Python,Operating System,我正在处理不同位置的文件。我希望在每一步都避免硬编码。我的文件包括,输入文件(由输入组成)、python脚本和输出文件。现在,我想在不硬编码脚本的情况下与上述每个文件夹进行交互。python是否有任何模块用于修剪根目录的路径并访问后续文件夹 目前,我正在使用os.getcwd()访问脚本的路径。我想使用此代码的输出来访问不同文件夹中的其他文件 import os dirpath = os.getcwd() root_dirpath, py_script = os.path.split(dirpa

我正在处理不同位置的文件。我希望在每一步都避免硬编码。我的文件包括,输入文件(由输入组成)、python脚本和输出文件。现在,我想在不硬编码脚本的情况下与上述每个文件夹进行交互。python是否有任何模块用于修剪根目录的路径并访问后续文件夹

目前,我正在使用os.getcwd()访问脚本的路径。我想使用此代码的输出来访问不同文件夹中的其他文件

import os
dirpath = os.getcwd()
root_dirpath, py_script = os.path.split(dirpath)

代码中的root_dirpath为我提供了python脚本的路径。我想将此路径修剪到用户文件夹,然后从另一个文件夹访问该文件。是否有任何模块可以在没有实际硬编码的情况下执行此操作。

有当前的工作目录, 然后是你的程序所在的目录。 它们是不同的概念,可能相同也可能不同

这个表达式非常有用:

os.path.dirname(os.path.realpath(__file__))
或者更简单地说,如果您的
$PYTHONPATH
缺少像
这样的麻烦条目。

有些项目将有一个“顶级”目录,它是一个或多个级别 从python源代码的位置。 您可能会发现将
'../../../'
附加到
\uuuuuu文件\uuuuuu
很有用, 或者使用
os.path.join()

以下是查找您喜爱的文件的一种可能性:

from pathlib import Path

top = Path(__file__ + '../..').resolve()
arrow = top / 'assets/arrow.png'
print('source image:', arrow)
print('destination image:', top / 'output' / os.path.basename(arrow))
警告:有时库代码直接从.zip文件运行 或其他不寻常的环境。
在这种情况下,您可能会发现
\uuuuuuuuuuuuuuuuuuuuuuuuu
没有那么有用。

从stdlib中查找
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,所以你可以循环浏览它的内容。你需要从根路径返回多少层?@ekmcd我想返回两层。在“'os.listdir(PATH)'”中,我是否需要指定路径!或者是否有方法获取根目录的路径。如果通过根目录/user文件夹,您指的是当前用户的主目录,则
os.environ['home']
应提供给您该路径。然后您可以使用
os.listdir(os.environ['home'])
列出
os.environ['HOME']中的每个文件和子目录。