[Python] os.system vs os.popen

os.system()を使ってExplorerを開くという処理を書いたのですが、
コマンドを実行するといちいちDOS窓が出るので、うざったいなぁと思っていました。


そんな時に、あきおさんのブログで、こんなのを発見しました。
os.system以外に外部コマンド実行する方法ってあるのねと思い、僕も試してみました。

こんな感じ。↓
os.popen(‘explorer “%s”‘ % opendir)

実行してみたところ、DOS窓も出なくなり、スッキリ。
本来はこういう使い方じゃないんだろうけど、まぁ良しとします:P

ちなみに、外部コマンドを実行する方法はこれ以外にもcommandsモジュールがあります。
どれをどういうときに使うのが効果的なのか謎なので、とりあえず手軽なところから使ってます。

「[Python] os.system vs os.popen」への4件のフィードバック

  1. commandsなんてあったんですね
    知らなかった

    逆にDOS窓を出したいときってどうしてますか?
    system(“cmd.exe ***.bat”)
    ってすると、DOS窓が立ち上がらずに
    script editor内に標準出力が吐き出されてしまうんですよね

  2. >あきをさん
    僕もこの間、コマンドを実行しないといけなくてちょっと調べてみたんですが、どれも大して変わらないような気がしました、、
    僕の用途がすごく基本的なものだった、ということも影響してるんだと思うんですが:P

    >逆にDOS窓~
    う、、考えたこともなかったです。
    今回DOS窓が出たのは、↑にも書いたとおりのexplorerのウィンドウを立ち上げるコマンドです。
    cmd.exeをはずしたらあるいは・・・、とか?
    そういえば前にos.system(“xxx.bat”)と直接実行した際にはDOS窓出てた様な気もします。たぶん、、、

  3. ユーザーに選択的な処理を行わせたかったのでDOSプロンプトを立ち上げたかったのです
    pythonのos.systemだと確かにプロンプトが立ち上がるのですが
    プロセスが全部とられちゃうのでMayaがフリーズしちゃうんですよね
    一応プロンプトを終了すれば処理できるようになるんですけど
    windowsの問題かもしれませんね

  4. >あきをさん
    あー、なるほど、そういうことがあるんですね。
    たしかに時間かかる処理させてたりとかすると、Mayaはごっそり持っていかれますね・・・w
    os.systemも同じような感じなんですかね?
    んー、、、Threading使うとかで解決できたりしないですかね。
    Windowsの問題だったら糸冬ですが:P

コメントを残す

メールアドレスが公開されることはありません。