今日はちょっとした小ネタです。

現在gRPCでNode.jsのコンテナとPythonのコンテナを通信させようとしているのですが、個人的によく使うjoinメソッドについて気になる点がありました。

まずはNode.js:

const path = require('path')

console.log(path.join('/foo/bar', '/baz')) // /foo/bar/baz

これに対してPython:

from os import path

print(path.join('/foo/bar', '/baz'))  # /baz

/bazというパスをjoinしようとするとPythonは/bazで上書きしてしまうようです。 この問題に対してのアプローチは以下のとおり

https://stackoverflow.com/q/14989407

from os import path

print(path.join('/foo/bar', '/baz'.lstrip(path.sep)))  # /for/bar/baz

考え方的には/bazbazに置き換えてるだけなので理解しやすいのですが、os.path.join関数の中でオプションがあると良かったなぁと思ってしまいました。