os.path alternative (force using forward slash rather than backslash, even if on windows)

ないのかなぁ。

os.path ってのは「仕方なく好きで使っている」という珍しいタイプのモジュールだったりする。

つまり、Python 3.x では pathlib なんかも使えたりするけれど、これは 2.7 では使えないし、そもそも os.path そのものが、非常にシンプルで使いやすいために、改まってほかのものを使おうという動機を持ちにくいのね。

だけれども。昔から「弱ったなぁ」なまんま使い続けているたった一つの文句、「Windows ユーザはバックスラッシュの雨を喰らえコラ」問題ね。これに repr なんか絡むと悲劇的で、特に例外メッセージ中に現れると号泣したくなる。例えばこんなであろう:

1 No such file or directory: u'C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\2017\\\\BuildTools\\\\VC\\\\Tools\\\\MSVC\\\\14.10.25017\\\\ATLMFC\\\\lib\\\\x64'

今や、もしくは今でも、C/C++ 文化の影響が非常に強いというよりは C/C++ だけが世界なので、基本的にどんな環境もバックスラッシュは「エスケープが必要な特殊文字」扱いだ。上の例の4つ重なってしまうのも、「元々エスケープ必要でエスケープが付いたものを「表現表現(repr表現)」するのにまたもやエスケープが必要で」という無限増殖パターンね。

そんなわけなんだから、なんで好き好んでバックスラッシュを使うかね、てのが普通のプログラマの心情であろう。タイプ数をあえて稼ぐと何か、時給が増えますかいね? だからどうして os.path (正確には win32 では ntpath) が頑なにバックスラッシュで返そうとするのかが、理解に苦しむのであった。デフォルトがそうなのは構わないが、制御出来ないのが困る。ソースコードを見るに、若干数箇所のハードコードを fix するだけで直るんだがなぁ。

現状「好きで使い続ける」ためには結局戻りを replace でスラッシュに置き換えてしまうか、もしくは「丸ごと書き換え」(ほんと数箇所だけなんだ、直す必要あるの)のどちらかしかなく、後者を選ぶくらいなら、きっと pathlib とかの方へアプローチした方が良いだろう。

そういうわけで、「replace で置き換えちゃう版」。誰かなんかの「とってもユーティリティ」な一味に取り込んでくれちゃったすると嬉しいんだけどね。だってたったこれだけのもんを PyPI に登録するとかって、バカらしくてやってらんないもん。