Python的os.path.join
被描述为“大多数情况下没有意义”, 因为它会丢弃任何前面不带斜杠的参数。暂且不论这是有意为之并且已经记录在案的行为,是否有现成的函数或代码模式可以避免这种情况发生?
给定HOMEPATH=\users\myname
,以下代码将会丢弃路径的开头。
print os.path.join('C:\one', os.environ.get("HOMEPATH"), 'three')
结果:
\Users\myname\three
期望的:
C:\one\Users\myname\three
由于我曾经被这个问题困扰过几次,现在当我自己写代码时,我已经很擅长注意到前导斜杠。但是,如果你不知道传入的字符串是什么样子的呢?就像这个例子一样。
args = [a[1:] for a in args if a.startswith('\\') else a]
或类似的操作。我认为大多数人都知道它应该如何工作。或者你也可以修复HOMEPATH,在Windows上它应该在文件系统根目录,但如果你以不同的方式使用它,那么你应该让它看起来像一个相对路径,而不是绝对路径。 - dash-tom-bangos.path.join()
会这样做并不难。 - Martijn Pieters