os.path.joinの挙動
今日はちょっとした小ネタです。
現在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
考え方的には/baz
をbaz
に置き換えてるだけなので理解しやすいのですが、os.path.join
関数の中でオプションがあると良かったなぁと思ってしまいました。