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

mat*_*kie 6 python os.path

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

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

print os.path.join('C:\one', os.environ.get("HOMEPATH"), 'three')
Run Code Online (Sandbox Code Playgroud)

结果:

\Users\myname\three
Run Code Online (Sandbox Code Playgroud)

期望:

C:\one\Users\myname\three
Run Code Online (Sandbox Code Playgroud)

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

kin*_*all 7

也许os.environ.get("HOMEPATH").lstrip(os.path.sep)...... join在每个参数(或第二个和后续的)上编写你自己的版本都是微不足道的.


jdi*_*jdi 6

只需去掉斜线即可

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