gpt4 book ai didi

Windows 上的 python os.path.join 忽略第一个路径元素?

转载 作者:可可西里 更新时间:2023-11-01 14:41:29 31 4
gpt4 key购买 nike

考虑以下几点:

>>> from django.conf import settings
>>> import os
>>> settings.VIRTUAL_ENV
'C:/Users/Marcin/Documents/oneclickcos'
>>> settings.EXTRA_BASE
'/oneclickcos/'
>>> os.path.join(settings.VIRTUAL_ENV,settings.EXTRA_BASE)
'/oneclickcos/'

如您所想,我既不希望也不希望将 'C:/Users/Marcin/Documents/oneclickcos''/oneclickcos/' 串联起来'/oneclickcos/'.

奇怪的是,再次反转路径组件显示 python 忽略了第一个路径组件:

>>> os.path.join(settings.EXTRA_BASE,settings.VIRTUAL_ENV)
'C:/Users/Marcin/Documents/oneclickcos'

虽然这像预期的那样工作:

>>> os.path.join('/foobar',settings.VIRTUAL_ENV,'barfoo')
'C:/Users/Marcin/Documents/oneclickcos\\barfoo'

我当然是在 Windows (Windows 7) 上运行 native python。

为什么会发生这种情况,我该怎么办?

最佳答案

这几乎就是 os.path.join 的定义方式(引用 docs ):

If any component is an absolute path, all previous components (on Windows, including the previous drive letter, if there was one) are thrown away

而且我认为这通常是一件好事,因为它避免了创建无效路径。如果您想避免这种行为,请不要为其提供绝对路径。是的,以斜杠开头的是绝对路径。一个快速而肮脏的解决方案只是删除前导斜杠(settings.EXTRA_BASE.lstrip('/') 如果您想以编程方式执行此操作)。

关于Windows 上的 python os.path.join 忽略第一个路径元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865293/

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