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)
被这几次咬了之后,我现在非常好,当我写完这篇文章的时候注意到一个领先的斜线,但是当你不知道传入的字符串是什么样的时候,就像在这个例子中一样?
也许os.environ.get("HOMEPATH").lstrip(os.path.sep)...... join在每个参数(或第二个和后续的)上编写你自己的版本都是微不足道的.
只需去掉斜线即可
path = os.environ.get("HOMEPATH").lstrip(os.path.sep)
os.path.join('C:\one', path, 'three')
Run Code Online (Sandbox Code Playgroud)