processingでosを判定

pythonでosを判定する方法で検索すると次のような物が出てくる

import os
print(os.name)

しかし、processingのpythonモードはjava上(Jython)で実行されるためwindowsであってもmacであってもos.nameはjavaとなってしまってosの判定ができない。

そこで、苦肉の策としてカレントディレクトリのパスを取得して、得られたパスの記述からwindowsかmacを判定することにした。windowsであれば「c:\hogehoge」のようになるので:が含まれていたらwindowsとした。雑な判定方法だけどね。

import os
if os.getcwd().find(":") > 0:
    print("windows")
else:
    print("mac")

メモ:-1はTrueだった

上記のプログラムは最初

import os
if os.getcwd().find(":"):
    print("windows")
else:
    print("mac")

のようになっていたけど、これは間違えです。

find関数で指定文字が見つからなかった場合、負の数かゼロが返って来て、それはFalseと同様だと思いこんでいた。

実際、見つからない場合は-1という負の数が返ってきますが、負の数-1はFalseではなくTrueと解釈されます。ちなみにFalseは0のみ。思い込みは良くないね。ちゃんとテストしないとね🥲

コメントする