世界的日曜WEBプログラマー日記 -16ページ目

世界的日曜WEBプログラマー日記

一年後に世界的なWEBサービスを運営するにはどうすればいいのか書いていく(予定)

Googleでお弁当とか検索していると、ブラウザが古いですよー的な警告が出始めた。
何故や?と思ったらデフォルトでインストールしているchromiunブラウザが古くなっているためだ。
こまめにapt-get update しているんだけどなぁ。

リポジトリに新たに追加しないとダメなのかもしれない。ubuntu11.04なんだけど。。
chromiumのバージョンは18.ウェブで見ると2011年度のやないか。まだ僕らのお弁当サイトマイ食も出来てない時。。。。


次のコマンドを叩いて問題なく動いた。
開発版:
sudo add-apt-repository ppa:a-v-shkop/chromium-dev
sudo apt-get update
sudo apt-get install chromium-browser

安定版:
sudo add-apt-repository ppa:a-v-shkop/chromium
sudo apt-get update
sudo apt-get install chromium-browser

好きな方でやるといいだろう。

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house

今回はsubprocessモジュールの簡単な使い方について



Python大好きお弁当屋の等々力です。
ソフトウェアのダイナプティコでは、Pythonがメインの言語です。

今回はsubprocessモジュールの使い方を説明します。
新人の頃、やたら難しいように感じていたのを覚えています。
osモジュールにも同じような関数があり、os.Popenでいいやん!とか思っていました。

subprocess de python!!


Python 2.4 から OS のコマンドを実行したり、それらの標準入出力/エラー出力のやり取りをするのに subprocess モジュールが追加されています。
os系にしか無いコマンドでos.popenを使いたい場合、素直にsubprocessモジュールでやるといいです。
更に、subprocessの場合はpopenでなく、call関数の方が使い勝手がいいです。callは次のように使います。

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

Popenと殆ど変わらりません。
ただ、オブジェクトを返すか返さないかがあり、自前で完結して欲しい場合などで差が出ます。
違いは次のとおりです。
・subprocess.Popen は Popen オブジェクトをリターン,
・subprocess.call は終了コードをリターン

subprocess.call関数定義をみると実は次のようになっています。
def call(*popenargs, **kwargs):
p = subprocess.Popen(*popenargs, **kwargs)
return p.wait()
中でpopenを呼んでいるんですね。

callの方がいいのですが、popenの使い方も一応説明しておきます。具体的な方が解りやすいと思うのでsubprocess.Popenの使い方を次に載せます。

import subprocess
cmdline = ['ls', '-l']
cmd1 = subprocess.Popen(cmdline, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT )
cmdline2=['sort', '-k', '5,5']
f=file( 'ret.txt', 'w' )
ans1 = subprocess.Popen(cmdline2, stdin = cmd1.stdout,
stdout= f,
stderr=subprocess.STDOUT )
f.close()



ディスクリプターを指定することができ、またパイプも自由自在に扱うことが出来ます。

株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house