Python 学習:system関数?

2014-03-10 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での、blogramのランクインカテゴリは、
2、2、2、1、2、 0、0、0、0、1(38)で、換算ポイント 57pt 。
「Firefox」一昨日夜に、5位にup。
そうこうしている内に「VM」が5位にdown。
2、2、2、0、3、 0、0、0、0、1(38)で、換算ポイント 55pt 。
・-・ - -・

さて、本文。

前記事(2014-03-08):
Python 学習:plotグラフPDF出力
に続いて、まだまだ Python の学習。

今回は、外部プログラムの起動方法。


Perl では、
PerlからRを使ってグラフ出力
で書いた如く、
  system( "Rscript hogehoge.R" );
とかで、
外部プログラムを起動できる。


Python では?
当然でしょうが出来ますね。

1つ見つけたのは、
「None is None is None」さんの、
Pythonから外部プログラムを起動
  ・・・・・
  外部プログラムを扱う方法はたくさんある
  ・ os (system, spawn*, popen*)
  ・ popen2 (popen*)
  ・ subprocess (Popen, call, check_call)
  しかし、osやpopen2の関数はC言語のsystem関数などに慣れた人向けと思われ、
  普通は高機能なsubprocessモジュールを使う方がよいです。
  ・・・・・
そうなんだ。
「os.system」でも良いが、
Python なら、「subprocess.ほにゃらら」ですか。


本家ドキュメントの日本語訳(Pythpn2.7JAdoc)にもあった:
17.1. subprocess - サブプロセス管理
  バージョン 2.4 で追加.

  subprocess モジュールは、新しくプロセスを開始したり、
  それらの標準入出力/エラー出力に対してパイプで接続したり、
  それらの終了ステータスを取得したりします。
  このモジュールは以下のような古いいくつかのモジュールを
  置き換えることを目的としています:
   ・ os.system
   ・ os.spawn*
   ・ os.popen*
   ・ popen2.*
   ・ commands.*
  これらのモジュールや関数の代わりに、subprocess モジュールを
  どのように使うかについては以下の節で説明します。
  ・・・・・


そうすると、
単純に起動するだけ(終了するまで待つ)ならば、

from subprocess import check_call
end_code = check_call( 'hogehoge.exe' ) # 「.exe」は付けなくても可
end_code = check_call( 'perl hoge.pl' ) # これもアリ

で終わり。


結果(STDOUT 出力)を受け取るなら、

from subprocess import Popen, PIPE
IN = Popen( [ 'ls', '-s' ], stdout=PIPE )
ww = IN.stdout.readlines() # とか・・・

これ、DOSの「dir」コマンドでやろうとしたが何故かエラーになる???

そこで、
Windows で、UNIX コマンド
  ・・・・・
  UnxUtilsのインストール
  については、
  「PUKIWIKI」のページに載っている。
    ダウンロードしたUnxUtils.zipを解凍(展開)するだけです。
    なので、コマンドプロンプトで便利に利用するための環境設定を行います。
  環境変数にwbinのパスを通すだけ。
  そして、
  「PUKIWIKI」のページには、
  上記に比べて格段に多数のコマンドが載っている!
  ・・・・・
  取り敢えず、
  ホスト・マシンのツール用ディレクトリに展開し、
  環境変数の PATH に、追加した。
  コマンドプロンプトで、
  「ls -l」が使えた。
  「wget http://jn1inl.blog77.fc2.com/」も。
  ・・・・・
でやってみた。

確かに、
17.1.5.1. Windows における引数シーケンスから文字列への変換
になにやら難しい事が書いてある。


まぁ、何はともあれ、
Python でも、「外部プログラムの起動」が出来た。

「None is None is None」には、
他にも、
  パイプで他のプログラムに書き込む例
や、
  stdin=PIPEとstdout=PIPEは同時に使うこともできます。
などもある。

後は、非同期処理ですね。


もっともっと、Python の学習を続けよう。



見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


140216
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク