一个os.path.join()在导致斜杠之前不丢弃?

时间:2013-02-20 20:36:13

标签: python os.path

Python os.path.joindescribed as "mostly pointless",因为它会在包含前导斜杠的参数之前丢弃任何参数。暂且不谈这是故意和记录的行为,是否有一个现成的功能或代码模式不会像这样丢弃?

鉴于HOMEPATH=\users\myname,以下内容将丢弃路径的开头

print os.path.join('C:\one', os.environ.get("HOMEPATH"), 'three')

结果:

\Users\myname\three

期望的:

C:\one\Users\myname\three

被这几次咬了之后,我现在非常好,当我写完这篇文章的时候注意到一个领先的斜线,但是当你不知道传入的字符串看起来像什么时,如何在这个例子中?

2 个答案:

答案 0 :(得分:7)

也许os.environ.get("HOMEPATH").lstrip(os.path.sep) ...编写自己的join版本会在每个参数(或第二个及后续版本)上执行此操作,这将是微不足道的。

答案 1 :(得分:3)

只需删除斜杠

path = os.environ.get("HOMEPATH").lstrip(os.path.sep)
os.path.join('C:\one', path, 'three')