[Python] os.path.join()の注意事項

問題

C:\tmp\abc\というパスが欲しくて下記のコードを書いたのに、
C:\abc\が返ってきてしまった

os.path.join("C:\\tmp", "\\ABC")

原因

11.2. os.path — 共通のパス名操作 — Python 3.6.5 ドキュメント

Windows の場合は、絶対パスの要素 (たとえば r’\foo’) が見つかった場合はドライブレターはリセットされません。要素にドライブレターが含まれていれば、それより前の要素は全て破棄され、ドライブレターがリセットされます。各ドライブに対してカレントディレクトリがあるので、 os.path.join(“c:”, “foo”) によって、 c:\foo ではなく、ドライブ C: 上のカレントディレクトリからの相対パス(c:foo) が返されることに注意してください。

つまり、
"\\ABC"
が原因だった。

解決策

os.path.join("C:\\tmp", "ABC")

連結の\はos.path.joinさんがつけてくれるし、
os.path.join利用時には先頭には\\をつけない、と覚えておけば困らなそう

「Windowsの場合は」、ってことは、LinuxやMacでは起こらないのか