10

Pythonos.path.join描述为“几乎毫无意义”,因为它会丢弃包含前导斜杠之前的任何参数。暂且不说这是有意的和记录在案的行为,是否有一个现成的函数或代码模式不会像这样丢弃?

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

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

结果:

\Users\myname\three

想要的:

C:\one\Users\myname\three

被这个咬过几次了,我现在很擅长在我写的东西时注意到一个前导斜线,但是当你不知道传入的字符串是什么样子的时候呢,就像在这个例子中一样?

4

2 回答 2

9

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

于 2013-02-20T20:40:04.893 回答
5

只需剥离斜线

path = os.environ.get("HOMEPATH").lstrip(os.path.sep)
os.path.join('C:\one', path, 'three')
于 2013-02-20T20:43:07.743 回答