Skip to content
12月 12 / rakkyoo

pythonでターミナルから返り値をもらう

Pythonでターミナル関数を使うときは,
「ls」を使いたいときなどは,

1
2
import os
os.system("ls")

とすれば,lsは使えます.
試しに,「test.txt」だけがあるディレクトリ上で使うと以下のような形です.

1
2
3
4
5
6
7
8
9
rakkyoo:$ python
Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("ls")
test.txt
0
>>>

でも,結果を返り値としてもうらうことができません.

1
2
3
4
5
6
>>> import os
>>> a = os.system("ls")
test.txt
0
>>> a
0

このような感じになり,「a」には0が入るだけになってしまいます(この値は環境によるようですが...)

いろいろと探していたら,ターミナル関数からの返り値をもらうときは,「commands」を使えば簡単にできるみたいですね.
「commands.getoutput」で返り値を取得できます.

1
2
3
4
5
>>> import commands
>>> a = commands.getoutput("ls")
test.txt
>>> a
'test.txt

こんな感じです.

たとえば,これを使って,ファイルの文字コードを取得して,UTF-8でないときは,UTF-8に変換するなんて時は,,,
(Pythonの関数を使ってもできるのですが,,,)

1
2
3
4
5
6
import commands
import os
 
in_file_name = "./test.txt"
if re.match("UTF", unicode(commands.getoutput("nkf --guess %s" % (in_file_name)))) is None:
    os.system("nkf -w -Lu --overwrite %s" % (in_file_name))

こんな感じに,「nkf」の「–guess」(←文字コードを調べる)や「-w –overwrite」(←UTF-8に上書き変換)を使って簡単に書くことができます.

Pythonの関数を調べるのが面倒なときに,
普段使いなれた,ターミナルでの関数を,簡単に使えるので,とっても快適です.

[`twib` not found]

Leave a comment

CAPTCHA


This blog is kept spam free by WP-SpamFree.