gpt4 book ai didi

python - 如何修复 os.path.join(os.getcwd(), os.relpath ('my_file' )) 不返回 'my_file' 的路径?

转载 作者:行者123 更新时间:2023-12-01 00:53:37 27 4
gpt4 key购买 nike

我有以下工作目录:/Users/jordan/Coding/Employer/code_base ,我想要获取绝对路径的文件位于 /Users/jordan/Coding/Employer/code_base/framework/GTC/tests/day_document.json 。我在文件/Users/jordan/Coding/Employer/code_base/framework/GTC/tests/test.py中有测试.

目前当我使用os.path.join(os.getcwd(), os.path.relpath('day_document.json')时我得到/Users/jordan/Coding/Employer/code_base/day_document.json 。我想获得 day_document.json 的正确文件路径以便测试能够在 CI 中正常工作。该代码当前正在测试文件中运行,位于 /Users/jordan/Coding/Employer/code_base/framework/GTC/tests/test.py .

我已经尝试过os.path.relpath('day_document.json')os.path.abspath('day_document.json')os.join ,并且都返回 /Users/jordan/Coding/Employer/code_base/day_document.json 。我还进行了大量的谷歌搜索,但似乎找不到任何人们能得到正确答案的东西。当我使用os.path.join(os.getcwd(), 'framework/GTC/tests/day_document.json')时,我得到了正确的行为,但我不想对文件路径进行硬编码。

这有效:

day_document_file_location = os.path.join(os.getcwd(), 'framework/GTC/tests/day_document.json')
with open(day_document_file_location, 'r') as day_doc_json:
day_doc_endpoint._content = day_doc_json.read()

但我不明白为什么这不会:

day_document_file_location = os.path.join(os.getcwd(), os.path.relpath('day_document.json'))
with open(day_document_file_location, 'r') as day_doc_json:
day_doc_endpoint._content = day_doc_json.read()

我必须提到,当我从文件位置运行后一个代码时,它可以工作,但不能从工作目录运行。

我想找到一种不对文件路径进行硬编码的方法,并且能够获取 /Users/jordan/Coding/Employer/code_base/framework/GTC/tests/day_document.json从工作目录。

最佳答案

根据[Python 3.Docs]: os.path.relpath(path, start=os.curdir) (强调是我的):

... This is a path computation: the filesystem is not accessed to confirm the existence or nature of path or start.

如果您不想硬编码framework/GTC/tests/day_document.json(中间目录),则需要搜索该文件。一种方法是使用 [Python 3.Docs]: glob.iglob(pathname, *, recursive=False) :

document_name = "day_document.json"
document_path = ""
for p in glob.iglob(os.path.join("**", document_name), recursive=True):
document_path = os.path.abspath(p)
break
if not document_path:
# Handle file not being present, e.g.:
raise FileNotFoundError(document_name)

不用说,如果目录树中有多个具有该名称的文件,则将返回第一个文件(并且不能保证它将是您要查找的文件)期待)。

关于python - 如何修复 os.path.join(os.getcwd(), os.relpath ('my_file' )) 不返回 'my_file' 的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56392198/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com